- PR -

SQL構文について教えてください。

1
投稿者投稿内容
タコ
会議室デビュー日: 2006/06/27
投稿数: 6
投稿日時: 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件が返って来る状態です。

どうかお願いします。
kiyoharu
常連さん
会議室デビュー日: 2005/08/06
投稿数: 25
お住まい・勤務地: 神奈川県鎌倉市
投稿日時: 2007-01-29 22:52
おつかれさまです。
SELECT IN(@引数)
ではなくて変数を二つにして
SELECT IN(@引数1,@引数2)
みたいにしなくてはいけないのでは?
つまり
@引数1=1114
@引数2=1115
のように設定すればよいのだと思いますが。
いまは「@引数=1114,1115」となっているため
'1114,1115'がひとかたまりの文字列と判断されているのかと。
タコ
会議室デビュー日: 2006/06/27
投稿数: 6
投稿日時: 2007-01-31 10:39
kiyoharu様、回答ありがとうございます。
昨日は社外で作業でしたので遅くなってしまいました。申し訳ありません。


>いまは「@引数=1114,1115」となっているため
>'1114,1115'がひとかたまりの文字列と判断されているのかと。

そうですね。これじゃ条件が違いますよね。(汗


実は条件の数は固定ではなく、
画面のGridViewから選択したレコードのID分を条件としたいのです。

1レコード選択したら
・・・SELECT IN('○')

3レコード選択したら
・・・SELECT IN('○','○','○')

というような感じです。
その為、引数は1つとして、その中に入れられないかな〜と思ったのですが・・・。
説明不足で申し訳ありません。

やはり1つの引数じゃ無理でしょうかね・・・。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-01-31 10:55
引用:

タコさんの書き込み (2007-01-31 10:39) より:

やはり1つの引数じゃ無理でしょうかね・・・。


For ステートメントで動的にパラメータと SQL ステートメントを生成すれば問題ないのでは。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
タコ
会議室デビュー日: 2006/06/27
投稿数: 6
投稿日時: 2007-02-01 12:44
じゃんぬねっと様 回答ありがとうございます。

言い忘れが多くて大変申し訳ありません。
現在、XMLにSQL文を書いているのですが、
SEからの指示もあり引数が固定されてしまってるんです。

引数が固定で無理なようでしたら、
ひたすらVBでループを書いて値を取得しようと思います。


kiyoharu様、じゃんぬねっと様本当にありがとうございました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-02-01 13:19
引用:

タコさんの書き込み (2007-02-01 12:44) より:

言い忘れが多くて大変申し訳ありません。
現在、XMLにSQL文を書いているのですが、
SEからの指示もあり引数が固定されてしまってるんです。


? 何か勘違いなさっていませんか?

IN 句を生成するためのメソッドを別で作れば良いだけの話で、
現在実装中のメソッドの引数は何ら関係ないと思いますが...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-02-01 13:28
確認ですが、ご質問は、と同じことではないのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Ahf
大ベテラン
会議室デビュー日: 2006/08/16
投稿数: 172
投稿日時: 2007-02-02 00:05
シングルクォーテーション込みで渡すようにメソッドを改良するというのはどうですか?
1114','1115
のような形で。

# どっちにしてもネックになるのはVB側のロジックだと思います。
# SQL文に対して引数を一つしか渡すしか機能がないのでしたら、
# 複数の引数を渡すようメソッドを改良、追加するか
# 一つの引数の中身を複数の値で構成するようにするか、かなと。
1

スキルアップ/キャリアアップ(JOB@IT)