• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数を使ってのSQL文の書き方(ASP))

変数を使ってのSQL文の書き方(ASP)

noname#259269の回答

  • ベストアンサー
noname#259269
noname#259269
回答No.1

SQL = SQL & ... はこれでOKです。 問題となるのは strday の中にはどんな形式の文字列で入ってきますか? それによって CONVERT が正しいかどうかが変わってきます。 例えば、 YYYYMMDD とかなら >= の右辺の CONVERT も同じ形式にしてやらないと大小比較が正しくできません。 左辺は文字列形式、そうすると CONVERT の第一引数は VARCHAR、第三引数は 112。 http://www.ilovex.co.jp/Division/SRD/archives/2007/08/convert.html あと、社内サイトでしょうか? 「SQLインジェクション」についても考慮が必要になるかもしれませんので調べてください。 http://msdn.microsoft.com/ja-jp/library/ms161953(v=sql.90).aspx #元から実装している他の部分で同様のコーディングになっている場合は大丈夫かな、という判断でよいかとは思いますが、厳密には確認しておく方が。。。

ymoshimoshi
質問者

お礼

早速ありがとうございます。 YYYY/MM/DDという文字形式のデータが渡されます。 そうすると、おっしゃている"CONVERT の第一引数は VARCHAR、第三引数は 112"というように 変える必要があるということでよろしいでしょうか?

関連するQ&A

  • ダブルコーテーションやシングルコーテーション

    私の持っている参考書の中に、次のように、 変数をダブルコーテーション、シングルコーテーション、およびピリオドで囲んでいるSQL文があるのですが、 この場合、なぜ、ダブルコーテーション、またはシングルコーテーションのみでは駄目なのでしょうか? [参考書の記載] where カラム名>="'.変数.'" ※変数は日付が入ります。varchar型です。

    • ベストアンサー
    • MySQL
  • SQLでの変数の扱いについて

    VBを利用してのSQL文に変数を使いたいのですが記述方法が良くわかりません。 まず dim a as string dim b as integer dim c as integer a="AAAA" b=10 c=23500 として テーブルZの項目1が nvarchar 項目2が tinyint 項目3がrealであった場合 sql文の記述方法をWebで探していると 文字列変数ならシングルクォーテーションでくくって代入 数値変数ならダイレクトに代入というようにとれるところがあったので下記の 様に記述すると更新されません sqlstr=("UPDATE テーブルZ set 項目1='a',項目2=b,項目3=c where 項目=1") 下記のように分割してそれぞれひとつづつのテストすると更新できます sqlstr=("UPDATE テーブルZ set 項目1=" & a & " where 項目=1") sqlstr=("UPDATE テーブルZ set 項目2='" & b & "' where 項目=1") sqlstr=("UPDATE テーブルZ set 項目2='" & c & "' where 項目=1") 上記の要領で1つにまとめると出来ないので,どのように書けばよいのでしょうか よろしくお願い致します

  • PL/SQLの変数について

    困っています。 ホスト引数で :NAME = "あいうえお" としてoracleに渡し、 PL/SQLでNAMEという変数で受け取った後、 Xという変数にその"あいうえお"を'あいうえお' のように、シングルクォーテーションで囲んで入れたいのです。 ですが、 NAME = 'X' としたら文字列として認識してしまい、 NAME = ''X'' としたらPLS-00103のエラーが出てしまいます。 シングルクォーテーションで囲んだ文字列を変数にセットする場合はどのように書いたら宜しいのでしょうか??

  • ASP+SQLにてSessionがNullになる

    Windows 2000 Server環境でIISにて次のような問題に遭遇しています。 ~calendar.asp~ If Request("year") <> "" Then Session("STR_DATE") = Request("year") & "/" & Request("mon") & "/" & Request("day") End If と、上記のような記述があり、STR_DATEの値が代入されています。 にも関わらず、SQLを実行するとSTR_DATEがNullになってしまいます。 SQL = "INSERT INTO SCHEDULE([DATE],[CATEGORY],[NAME],[COMMENT]) VALUES ('" & Session("STR_DATE") & "','" &Request("category") & "','" &Request("name") & "','" & Request("comment") & "')" OBJ.Execute(SQL) 結果、日付(DATE)がNullでレコード追加されてしまいます。 ASP全文を掲載すると長文になってしまうので、一部抜粋して掲載しました。 情報不足は承知しておりますが、お知恵をお借りできませんでしょうか。 宜しくお願いいたします。

  • シェル内で「'」に囲まれた部分への変数の展開

    oracleにアクセスするシェルを作成しており、期間指定の部分を変数で 指定したいと思っています。 しかしシングルクォーテーションに囲まれた部分の扱い方がよくわからず、 やむを得ず、変数内にクォーテーションを持たせ対処しました。 具体的には【現状】に示すようなコードです。 【現状】でも動くには動くのですが、将来的にはシェルの引数として 渡して実行したい為、出来れば変数内にはクォーテーションを持たせず 【希望】に示すイメージのコードにしたいと思っています。 単にエスケープの仕方の問題のような気がしているのですが、 なかなかうまくいきません。 変数の定義の部分が【希望】のとおりであれば、SQL部分の文字列は 多少変えてしまっても問題ありません。 シェル内で「'」に囲まれた部分への変数の展開させる方法、 これを教えてください。 よろしくお願いします。 --【現状】------------------------------------- FROM_DATETIME="'2010-10-10 00:00:00'" TO___DATETIME="'2010-12-10 00:00:00'" sqlplus scott/tiger@oracle << EOT select count(*) from tablename where columnname between to_date(${FROM_DATETIME}, 'YYYY-MM-DD HH24:MI:SS') and to_date(${TO___DATETIME}, 'YYYY-MM-DD HH24:MI:SS') / quit EOT ----------------------------------------------- --【希望】------------------------------------- FROM_DATETIME=2010-10-10 00:00:00 TO___DATETIME=2010-12-10 00:00:00 sqlplus scott/tiger@oracle << EOT select count(*) from tablename where columnname between to_date(\'${FROM_DATETIME}\', 'YYYY-MM-DD HH24:MI:SS') and to_date(\'${TO___DATETIME}\', 'YYYY-MM-DD HH24:MI:SS') / quit EOT -----------------------------------------------

  • ASPでSQL文を使う場合に。

    クラシックなASPを利用しております。 データベース(mdb)に、ユーザIDによってフィールドが分けられた部分があります。 そこをカウントさせたいです。その際のSQL文の書きかたがよくわかりません。 イメージとしては、以下のようなかんじです。      ユーザID:A ユーザID:B データID    1      1 データID    1      1 こんなかんじでデータベースに登録されていて、ユーザIDごとにデータが入力されている(1と入力されている)フィールドをカウントしたいのです。 ユーザIDは、ログインする際に取得されるもので、個人個人で変わります。Sessionを使用しています。 SQL文の中に引数という形でユーザIDが代入されれば解決するのですが、どうもうまくいきません。なんとか教えていただけないものでしょうか。

  • こんなSQL文

    Oracle8.1.7を使用しております。 以下のようなテーブルに対し、1行目と2行目を削除するSQL文を書きたいのですが、思いつきません。どなたか、アドバイスいただけないでしょうか? 表名:A   B | C ――――――――   2 | 10   2 | 1   1 | 10   1 | 1   1 | 11   1 | 2   1 | 1   3 | 10   2 | 3 変数として、P1=1とP2=2があります。(これは、SQL文の中に直接書くものとします。) ここで、SELECT B,C FROM A WHERE B=1;とSELECT B,C FROM A WHERE B=2;を実行すると、次のようになります。   B | C     B | C ――――――――― ―――――――――   1 | 10    2 | 10   1 | 1     2 | 1   1 | 11    2 | 3   1 | 2   1 | 1 ここで、それぞれの表を見ると、Cの値が一致している部分があります。この一致していて、Bが2の行を削除したいのですが、SQL1文では無理でしょうか? 最近、SQLには慣れてきたつもりだったのですが、こんなとこでつまずくとは・・・どうぞよろしくお願いします。

  • SQL文の作成について

    前の質問が解決してないのに、すいません。 SQL文を作成して、関数に投げると配列で 実行結果が返ってくるらしいのですが。 SQL文作成時に変数をWHERE節に組み込む 記述の仕方が自信ないです。以下のような感じです。 Dim srtSql As String Dim Key_Id As String Call Key_Get(Key_Id)  ’キーを取得 strSql = strSql & ”Select Tb*” strSql = srtSql & ” From Tb ” strSql = strSql & ”Where ” srtSql = strSql & ”Tb_Key_Id = ’” strSql = strSql & Key_id & ”’” のように(Accessだとこんな感じ【キーはSring】)ダブルクォーテーションの外に書いてよいのでしょうか?

  • SQL文 複数条件の場合の書き方

    初めて質問します。 下記のようなデータが存在します。 テーブルA NO DATE GYO 1 2010/12/01 1 1 2010/12/01 2 2 2010/12/01 1 2 2010/12/01 2 2 2010/12/01 3 3 2010/12/02 1 <= 4 2010/12/03 1 4 2010/12/03 2 上記データにて、<=の行の値を取得し変数へ代入したとします。 変数.NO =3 変数.日付 =2010/12/02 変数.GYO =1 上記、変数を元に1件前のレコードを抽出したいのですが SQL文でのいい方法がわかりません。 取得したいレコード 1 2010/12/01 1 1 2010/12/01 2 2 2010/12/01 1 2 2010/12/01 2 2 2010/12/01 3 どうかお願いいたします。

  • JavaでのSQL文について教えてください

    int row_count = smt.executeQuery("select SYAIN_NAME from SYAIN_MASTER where SYAIN_ID='"+ SYAIN1 +"'"); 「SYAIN1」は、変数です。 変数を使ったときのSQL文を書くときの 「"」の位置などがわかりません。 この文だとエラーが出てしまいます。 どのようにすればいいのか、わかる方教えてくださいm(__)m

    • ベストアンサー
    • Java