VB6のプログラムを読んでいたら、ACCESSのMDBにSQL文を
投げる際に以下のような記述がありました。
------------------------------------------------------
select * from tableA
where (colA & colB) in ((1 & 1), (2 & 2))
------------------------------------------------------
これはどういったことを表しているのでしょうか?
雰囲気的には
(colA, colB) の組み合わせが (1, 1) か (2, 2)
というようなことを表しているのかなと思うのですが
はっきりとわからなかったため質問させていただきました。
また、これはOracle等の他のDBでも使用できる構文
なのでしょうか?
ご存知の方がいらっしゃいましたら教えていただけたらと
思います。
No.1ベストアンサー
- 回答日時:
<IN=集合>
WHERE節のキーワード INに値を列挙することで、その値を持つ列を抽出することができます。
<列名> [NOT] IN (<値1>,<値2>,...<値n>,)
SELECT * FROM 得意先一覧 WHERE 郵便番号 IN ('8300001', '8300002')
Informix、SQL Sever では、このように書きます。
ですから、構文としては共通した書き方です。
ただし、Access では、演算子をSQLのそれでなくVBAのそれが通用します。
・文字列の加算・・・&
・'11' と 11とで型照合エラーが発生しない。
などです。
ですから、Access 以外では、次のような書き方が一般的。
[イミディエイト]
? DBSelect("SELECT * FROM A WHERE 列1+列2 IN ('1'+'1', '2'+'2')")
1;2;2;
2;1;1;
この場合、列1と列2の組合せが1+1、2+2 を取得しています。
ただし、示されているコードはバグに近い書き方です。
[イミディエイト]
? DBSelect("SELECT * FROM A WHERE 列1+列2 IN ('11'+'11', '22'+'22')")
1;11;11;
2;22;22;
3;111;1;
[イミディエイト]
? DBSelect("SELECT * FROM A WHERE 列1+'/'+列2 IN ('11/11', '22/22')")
1;11;11;
2;22;22;
この2つではヒットするレコードが違います。
ちょっと、問題ありかと思います。
>>ただし、示されているコードはバグに近い書き方です。
なるほど、そうなんですか。
勉強になりました。
回答をありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
警察はスマホに保存した動画や...
-
CSVファイルでテキストの改行の...
-
ITパスポートについての質問で...
-
データベース用語「実表」の読み方
-
Access クエリ上で表示させた割...
-
Accessを開きなおすとテキスト...
-
データベースソフトの「TCARD f...
-
Accessのリンクテーブルについて
-
Access フォーム上でコンボボッ...
-
帳票フォームでのあるコンボボ...
-
DocuWorksでの印刷
-
式を簡単にしてください。ACCES...
-
私はシステム会社に務めている...
-
DBエラーを解決したい
-
マイクロソフトAccessでsqlのas...
-
情報整理するのに、「 Fullfree...
-
レコード数のカウント
-
データベースの選定について 要...
-
ドリームメーカーってどうやっ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INDIRECT関数の代替方法は?
-
BULK INSERT時のNull許容について
-
【Transact-sql】 where条件、i...
-
Accessの「IIF」に相当するSQL...
-
Accessで複数(3以上)...
-
create tableのフィールド名
-
Oracleの制約について
-
列を行に表示する方法は?
-
SQLiteで「UPDATE table1 SET c...
-
WHERE句の速度について
-
EXCEL VBA
-
自分自身のテーブルを参照して更新
-
WHERE句で結合。INNER JOINとの...
-
DBの定義のサイズを大きくし過...
-
一部のカラムでdistinctし全て...
-
テーブルの列数を調べたい
-
now()かCURRENT_TIMESTAMPか
-
SQLServerでNULLを挿入したいです
-
MYSQLで全てのカラムから検索す...
-
GREATESTで NULLをスルーする方...
おすすめ情報