
inの中の値を変数に持たせ、実行したいのですが方法がわかりません。
以下に、問題となっているsqlを記載しました。
aテーブルのIDはsmallint型で、varchar型等への型変更不可とします。
cast(ID as varchar(100)) in (@ID) 等も試してみたのですが、
'1,2,3'をin内の1データとみなしてしまっているようで、正しい結果を
返してくれませんでした。
declare @ID varchar(100)
set @ID = '1,2,3'
SELECT * FROM a WHEREID in (@ID)
No.2ベストアンサー
- 回答日時:
条件式の値部分(「列名=変数」や「列名 between 変数1 and 変数2」でなく、式全体を変えたいようなケース(inでの値の個数変更を含む)では、動的SQLを使う必要があります。
SQL Serverで動的SQLを使い、select文で複数行を得る場合の方法についてはあまり詳しくないので、ヒントという形でアドバイスします。
こんな感じで、文字列でカーソル定義(この時、SELECT文の条件式を変える)し、カーソルで操作する形になると思います。
execute('DECLARE tb CURSOR FOR SELECT * FROM tablename' + @yymm)
No.3
- 回答日時:
他の方が回答されている動的SQLか、受け取った変数をテンポラリテーブルに挿入してから、IN (SELECT a FROM temp_table) というのも可能だと思います。
No.1
- 回答日時:
inの値を変数にする場合は、
where 列名 in(変数1,変数2,変数3)
のように記述し、検索条件の列と各変数は、データ型の変換ができる必要があります。
この回答への補足
回答有難う御座います。
そうですね。それで実装できそうです....が、
欲を言うなら、inのパラメータを固定にしたくありません。
簡単に書きましたが、
set @ID = '1,2,3'の1,2,3は、はストアドのパラメータとなっていて、
アプリから渡してもらう値で可変です。
そのため@IDに入れる値は、1,2の時もあれば、1,2,3,4,5の時もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
型 varchar から型 numeric への変換エラー。
その他(データベース)
-
EXISTSを使ったDELETE文
SQL Server
-
xp_cmdshellについて
SQL Server
-
-
4
SQLサーバに対するSQL文で抽出した時にないレコードを0で表示させるには?
SQL Server
-
5
SELECT 文 GROUP での1件目を取得
SQL Server
-
6
SQL Server のデータをCSVファイルに保存
SQL Server
-
7
SQLserver2005 nvarchar を float に変換中にエラー発生
SQL Server
-
8
特定条件でWHERE句の条件を変更したい
SQL Server
-
9
SQLServerで文字列の末尾からある位置で取出
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access2013で操作ログを残した...
-
SQLCMDにて教えていただきたい...
-
SQLサーバー接続 特定のPCがWin...
-
BULK INSERT時のNull許容について
-
SQLの複数のカウントについて
-
SQL Date型の列から年月だけを...
-
外付けハードディスクの容量が...
-
sqlで、600行あるテーブルを100...
-
sqlserverで対象のレコードを削...
-
Microsoft SQL Serverについて
-
Wacom Cintiq 16 と Wacom Cint...
-
SQLをはじめから勉強するには
-
SQL クエリ データ数
-
SQL Server management studio ...
-
Tverは無料でしょうか?
-
サーバー破壊
-
Visuaal Studio Community 2022...
-
Access2021 「ISNULL関数には引...
-
甘いものがすきなのってなおせ...
-
SQLて何ですか!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
他のシートの検索
-
INDIRECT関数の代替方法は?
-
BULK INSERT時のNull許容について
-
【Transact-sql】 where条件、i...
-
自分自身のテーブルを参照して更新
-
Accessの「IIF」に相当するSQL...
-
WHERE句で結合。INNER JOINとの...
-
SQLにてフィールドを+1
-
ACCESS SQLのデータ変換。
-
Accessで複数(3以上)...
-
mongoDBについて質問です
-
【SQL文】 where (colA & colB)...
-
SQLiteで「UPDATE table1 SET c...
-
ストアドファンクションで
-
SQL分のコツ
-
WHERE句の速度について
-
create tableのフィールド名
-
SELECT文で、指定カラム以外の...
-
DBの定義のサイズを大きくし過...
-
一部のカラムでdistinctし全て...
おすすめ情報