
いつも楽しく拝見させて頂いています。
初心者ですが宜しくお願いします。
シングルクォーテーションとダブルクォーテーションの使用方法について質問させて頂きます。
select文でテーブル名を指定するときはそのまま(たとえば'名前'じゃなく名前)しないとエラーになります。そういう風なシングルクォーテーション(又はダブルクォーテーション)を使ってはいけないところ、またシングルクォーテーションにしないといけないところ、ダブルクォーテーションにしないといけないところを教えて頂けますでしょうか?もし両方OKならその違い等も教えていただけるとうれしいです。
以上宜しくお願いします。
No.2ベストアンサー
- 回答日時:
文字定数は、「'」で囲む必要があります。
例)SELECT 'ABC' →文字定数の'ABC'と解釈される
SELECT ABC →ABCは、表名や列名と解釈される
数値定数は、多くのRDBMSでは「'」で囲みませんが、MySQLでは独自仕様として囲むことが可能です。
例)SELECT 123 →数値定数の123
SELECT '123' →一般的なRDBMSでは文字として扱われる。MySQLでは数値としても扱える
殆どのRDBMSには予約語があり、RDBMSでは予約語を頼りに構文解析します。表名や列名に英単語やその組み合わせを使おうとすると、予約語とぶつかってしまうことがあります。
例)SELECT FROM FROM →予約語のSELECT FROMの間に「*」や列名が指定されておらず、RDBMSは構文誤りと認識する
それを回避するために、標準SQLでは「"」で表名や列名を囲みます。MySQLでは、文字コードにANSIを使う場合は、「"」で、それ以外には独自仕様で「`」(バッククォーテーション)を使います。
例)SELECT "FROM " FROM →多くのRDBMSでは「"」で囲むことで、RDBMSに最初の「FROM」は、列などの名前であることを知らせる
SELECT `FROM` FROM →ANSI以外のMySQLでは、「`」(バッククォーテション)で囲む
また、「-」(ハイフォン)を表名や列名に使う場合、「"」で囲まないと、SQLでは減算と解釈されます。このように、「"」で囲むことで、記号なども名前に使用することができます。
例)SELECT ABC-DEF →列ABCと列DEFの減算と解釈される
SELECT "ABC-DEF" →列「ABC-DEF」と解釈される
SELECT `ABC-DEF' →ANSI以外のMySQLでは、「"」でなく「`」(バッククォーテション)を使用
文字コードでバッククォーテーションを使ったりダブルクォーテーションを使うことがあるんですね。ありがとうございました。とても参考になりました。
No.1
- 回答日時:
テーブル名やフィールド名はバッククォーテーション「`」です。
値や文字列はシングルクォーテーションを使うのが一般的です。
シングルクォーテーションはダブルクォーテーションと同等ですが、
SQLは多くのプログラミング言語と連携してつかうケースが多く、
例えばPHPで書く場合
$sql="SELECT * FROM `hoge` WHERE `fuga`='$piyo'";
とするときれいにかけますが
$sql='SELECT * FROM `hoge` WHERE `fuga`="$piyo"';
としても$piyoは変数として処理されません。
これは多くのプログラム言語でシングルクォーテーションで括った
場合は変数を展開しないという決まりがあるからです。
したがってSQLではシングルクォーテーションを括り文字として
使った方がスマートです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ホテル・旅館 ホテルの厚意でのアップグレードの場合 5 2023/06/10 13:18
- レディース トイレットペーパー? 女性に質問です。 男性の回答はお控え下さいm(_ _)m 女性に質問です。 ト 2 2023/02/25 21:11
- お菓子・スイーツ サーティワンについてで アイスの入れる袋 小、パイント、クォート、中、大、ってそれぞれ何個のシングル 2 2022/09/17 10:51
- 一眼レフカメラ SFP モジュールについて 1 2023/06/04 14:54
- 日用品・生活雑貨 節約のためにはシングルロールでしょうか?トイレットペーパーはダブルとシングルの2種類ありますが節約の 4 2022/12/11 18:20
- 電気・ガス・水道業 ビジネスホテルのシングル一室にかかる電気代はについて質問いたします。 わかる方いらっしゃいましたが、 3 2022/06/08 19:17
- お酒・アルコール 水割りが得かロックが得か 6 2022/07/18 07:58
- ホテル・旅館 新宿近辺で素泊まりで安いホテルを探しています ホテル松の井 新宿ノースホテル 1 2023/06/27 03:56
- ホテル・旅館 新宿近辺で素泊まりで安いホテルを探しています ホテル松の井 新宿ノースホテル 3 2023/06/22 11:33
- JavaScript HTML,JS初心者です。 2つのselectボックスが有り その選択の組み合わせにより 指定した文 3 2022/03/31 23:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysql超初心者です。テーブルへ...
-
MySQLカラム名は日本語と英数字...
-
エクセルで連勤チェックをした...
-
mysqlがインストールされている...
-
VBAで変数内に保持された二次配...
-
ODP.NETのバージョン確認
-
UTF-8にしても文字化けが直らない
-
max_sp_recursion_depthを設定...
-
ERROR 1045 (28000) (using pas...
-
副問合せにLIKE文を使う方法は...
-
MysqlにURLを登録する方法
-
「set names utf8」ですよね?
-
mysql(mariaDB)の格納文字数は...
-
select文でのデータの取り出し方法
-
MySQLのテーブル作成でハイフン...
-
phpMyadminでどうしてもinnoDB...
-
LIMIT で条件を満たしているの...
-
データベース(mysql)の日本語...
-
経過時間(hhmmdd)をDATE型には...
-
SQL文の実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysqlコマンドでSQL文が実行で...
-
cseデータ閲覧時に文字化け
-
mysqlへのインポート処理がうま...
-
シングルクォーテーションとダ...
-
"文字列"? > CSVデータをMySQL...
-
文字列分割して、ソート出来ま...
-
mysqlのmatch() against()で検...
-
MySQLのデータの互換性は?
-
ERROR 1054 (42S22) 原因不明です
-
MySQLのLOAD DATA INFILEコマン...
-
now()
-
access2000からmysqlへ access...
-
PHPの質問です、ご回答いただけ...
-
接続ができません
-
MySQLカラム名は日本語と英数字...
-
副問合せにLIKE文を使う方法は...
-
列数が多いと結果が行単位に改...
-
like句を使って日本語を検索す...
-
SQLのVARCHARとVARCHAR2の違い
-
VBAで変数内に保持された二次配...
おすすめ情報