- - PR -
SQL構文について教えてください。
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2007-01-29 21:21
すいません、SQLの構文で質問があります。
環境は VB.NET 2005 SQLSERVER 2005 現在、2フィールドの文字列を連結させて、 それを条件にして検索しようとしています。 TABLE --------- 111 | 3 '111' '3' ⇒'1113' その条件をVB側で作成し、引数で渡して「SELECT IN」の中に入れて実行しても、 望んだ結果が返ってきません。 調べてみて、条件式がおかしいと気づいたのですが、 どう引数に渡してあげればきちんと結果が返って来るでしょうか?? ----やりたいこと------ TABLE --------- 111 | 3 111 | 4 111 | 5 111 | 6 ・・・SELECT IN('1114','1115') ⇒2件が返って来る ------------------------------ 引数の設定を、SELECT IN(@引数)としている。 それぞれの値にシングルコーテーションが付いておらず ・・・SELECT IN('1114,1115')とかになってしまい ⇒0件が返って来る状態です。 どうかお願いします。 | ||||
|
投稿日時: 2007-01-29 22:52
おつかれさまです。
SELECT IN(@引数) ではなくて変数を二つにして SELECT IN(@引数1,@引数2) みたいにしなくてはいけないのでは? つまり @引数1=1114 @引数2=1115 のように設定すればよいのだと思いますが。 いまは「@引数=1114,1115」となっているため '1114,1115'がひとかたまりの文字列と判断されているのかと。 | ||||
|
投稿日時: 2007-01-31 10:39
kiyoharu様、回答ありがとうございます。
昨日は社外で作業でしたので遅くなってしまいました。申し訳ありません。 >いまは「@引数=1114,1115」となっているため >'1114,1115'がひとかたまりの文字列と判断されているのかと。 そうですね。これじゃ条件が違いますよね。(汗 実は条件の数は固定ではなく、 画面のGridViewから選択したレコードのID分を条件としたいのです。 1レコード選択したら ・・・SELECT IN('○') 3レコード選択したら ・・・SELECT IN('○','○','○') というような感じです。 その為、引数は1つとして、その中に入れられないかな〜と思ったのですが・・・。 説明不足で申し訳ありません。 やはり1つの引数じゃ無理でしょうかね・・・。 | ||||
|
投稿日時: 2007-01-31 10:55
For ステートメントで動的にパラメータと SQL ステートメントを生成すれば問題ないのでは。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-02-01 12:44
じゃんぬねっと様 回答ありがとうございます。
言い忘れが多くて大変申し訳ありません。 現在、XMLにSQL文を書いているのですが、 SEからの指示もあり引数が固定されてしまってるんです。 引数が固定で無理なようでしたら、 ひたすらVBでループを書いて値を取得しようと思います。 kiyoharu様、じゃんぬねっと様本当にありがとうございました。 | ||||
|
投稿日時: 2007-02-01 13:19
? 何か勘違いなさっていませんか? IN 句を生成するためのメソッドを別で作れば良いだけの話で、 現在実装中のメソッドの引数は何ら関係ないと思いますが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-02-01 13:28
確認ですが、ご質問は、と同じことではないのでしょうか?
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2007-02-02 00:05
シングルクォーテーション込みで渡すようにメソッドを改良するというのはどうですか?
1114','1115 のような形で。 # どっちにしてもネックになるのはVB側のロジックだと思います。 # SQL文に対して引数を一つしか渡すしか機能がないのでしたら、 # 複数の引数を渡すようメソッドを改良、追加するか # 一つの引数の中身を複数の値で構成するようにするか、かなと。 | ||||
1
