![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
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で質問しましょう!
似たような質問が見つかりました
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL MYSQL エラー 2 2022/10/18 11:37
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
処理件数を非表示にしたい
SQL Server
-
SQLで列名を変数にできないでしょうか
SQL Server
-
-
4
ストアドプロシジャからストアドプロシジャを呼ぶには?
Oracle
-
5
MS SQLServer のSQLで文字列の前にN:
その他(データベース)
-
6
ストアドプロシージャ_カーソルのヒット件数
その他(データベース)
-
7
列名に変数を使うことはできないのでしょうか?
SQL Server
-
8
ユーザー定義関数内でのsp_executesqlプロシージャの使用
SQL Server
-
9
オラクルではできるのにSQLSERVERではサブクエリーで複数キーを指定できない?
SQL Server
-
10
GROUP BYでエラーが発生
SQL Server
-
11
GROUP BYを行った後に結合したい。
Oracle
-
12
MAX値を条件にデータを取得するには?
SQL Server
-
13
Transact-SQLでストアードプロシージャ・関数内でのみ有効なモジュールは作れますか?
SQL Server
-
14
MAX関数を使ってからLEFT JOINしたいのですが・・
PHP
-
15
SQLServer2005のストアドプロシージャで変数を配列で使用する方法をご教示ください
SQL Server
-
16
検索結果の列数を動的に変更したい
SQL Server
-
17
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
18
開始と終了を指定して、その間の日付を取得したい。
C言語・C++・C#
-
19
カーソルを使って、最終行レコードの判断はどうすればよいのでしょうか。
SQL Server
-
20
特定条件でWHERE句の条件を変更したい
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
BULK INSERT時のNull許容について
-
Accessの重複なしのカウントの...
-
ACCESS2007 フォーム 「バリア...
-
SQL 不要な文字列を削除したい
-
Tverは無料でしょうか?
-
サーバー破壊
-
Visuaal Studio Community 2022...
-
Access2021 「ISNULL関数には引...
-
甘いものがすきなのってなおせ...
-
SQLて何ですか!
-
生え際から顎先まで17.5 頭頂か...
-
sql serveについて
-
SQLを駆使したデータ抽出ってど...
-
自己相関サブクエリと自己結合...
-
DBのテーブルの設計ができず困...
-
T-SQLを無料で勉強したいです。...
-
AccessのInsertクエリのあとつ...
-
これをSQL文で出来るでしょうか?
-
SQL 期間内の実施数を合計したい
-
SQLについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INDIRECT関数の代替方法は?
-
【Transact-sql】 where条件、i...
-
BULK INSERT時のNull許容について
-
Accessの「IIF」に相当するSQL...
-
WHERE句で結合。INNER JOINとの...
-
WHERE句の速度について
-
SQLiteで「UPDATE table1 SET c...
-
Accessで複数(3以上)...
-
ADOによる検索条件の書き方(ア...
-
create tableのフィールド名
-
列を行に表示する方法は?
-
Oracleの制約について
-
PLSQLのTO_CHARについて
-
SQLの書き方
-
CSV fileを指定してSQLへimport
-
mongoDBについて質問です
-
EXCEL VBA
-
自分自身のテーブルを参照して更新
-
【SQL文】 where (colA & colB)...
-
DBの定義のサイズを大きくし過...
おすすめ情報