VBAのSQL文において
- 「ダブルクォーテーション」と「シングルクォーテーション」との違いがわからない。
- そもそもダブルクォーテーションの意味がいまひとつわからない。
という声がよく聞かれます。
実際に各種サイトを調査しても意外と説明が省略されていたりします。そこで今回は
- SQL文におけるダブルクォーテーションの意味→SQL文そのものを表す。
- SQL文におけるシングルクォーテーションの意味→文字リテラルを表す。
- ダブルクォーテーションとシングルクォーテーション違い。
について徹底的に解説していきますね☆
ExcelVBA・SQL|ダブルクォーテーションとシングルクォーテーションの違い
ダブルクォーテーションとシングルクォーテーションとの違いを解説する前にそれぞれの意味について説明していきますね。
SQL文におけるダブルクォーテーションの意味
ダブルクォーテーションはSQL文では、VBAで記載した際に「ダブルクオーテーションで囲んだ文字列をSQL文そのものとして認識させる」役割を持ちます。
以下のVBAを使ったSQL文を見てください。
vSQL = "SELECT 商品名 FROM 商品マスタ;"
このように、SQL文を変数に入れるときは、ダブルクォーテーションで囲み、「”SQL文”」のように記述します。
ダブルクォーテーションは、「ダブルクォーテーションで囲んだ文字列がSQL文である」と認識させる役割になるのです。
※正確には、「ここで一つのSQL文の終わりですよ」ということを表すためにSQL文の最後に「;(セミコロン)」を入れ、「”SQL文;”」のように記述します。
SQL文におけるシングルクォーテーションの意味
シングルクォーテーションは、SQL文で指定する文字リテラル(やり取りする具体的な文字列)であるということを認識させる役割を持っています。
文字リテラルとは、例えば、Accessにおいて、フィールド「商品名」の中のレコード「マグロ」のように具体的な文字列を意味します。
例えば、以下のようにテーブル「商品マスタ」のフィールド「商品名」のレコード「マグロ」の、「マグロ」が文字リテラルになります。
SQLでは、この文字リテラル「マグロ」を記述する際にシングルクォーテーションで囲みます。
vSQL = "SELECT 商品名,価格,出荷元 FROM 商品マスタ WHERE 商品名='マグロ';"
このように、シングルクォーテーションは、シングルクォーテーションで囲んだ文字列は「指定する文字リテラル(やり取りする具体的な文字列)である」ということを認識させる役割を持っています。
※ただし、以下のように「やりとりする具体的なもの」が数字(数字リテラル)の場合は、シングルクォーテーションで囲みません。
例えばフィールド「価格」のレコード「200」を指定する場合は、シングルクォーテーションで囲まずに記述しますので注意してください。
vSQL = "SELECT 商品名,価格,出荷元 FROM 商品マスタ WHERE 価格=200;"
ダブルクォーテーションとシングルクォーテーション違い
以上のことをまとめると、ダブルクォーテーションとシングルクォーテーションとの違いは以下のようになります。
- ダブルクォーテーション → 「ダブルクォーテーションで囲んだ文字列がSQL文である」と認識させる役割。
- シングルクォーテーション → シングルクォーテーションで囲んだ文字列が、指定する文字リテラル(やり取りする具体的な文字列)である」と認識させる役割。
vSQL = "SELECT 商品名,価格,出荷元 FROM 商品マスタ WHERE 商品名='マグロ';"
【参考リンク】
まとめ
今回はVBAを使ったSQL文におけるダブルクォーテーションの意味とシングルクォーテーションの意味や、その違いについてお伝えしてきました。
それぞれの役割は以下のとおりです。
- ダブルクォーテーション → 「ダブルクォーテーションで囲んだ文字列がSQL文である」と認識させる役割。
- シングルクォーテーション → シングルクォーテーションで囲んだ文字列が、指定する文字リテラル(やり取りする具体的な文字列)である」と認識させる役割。
SQL文ではダブルクォーテーションとシングルクォーテーションが頻出しますので、ぜひ今回の記事を参考にしてくださいね☆
コメント