いつも楽しく拝見させて頂いています。
初心者ですが宜しくお願いします。
シングルクォーテーションとダブルクォーテーションの使用方法について質問させて頂きます。
select文でテーブル名を指定するときはそのまま(たとえば'名前'じゃなく名前)しないとエラーになります。そういう風なシングルクォーテーション(又はダブルクォーテーション)を使ってはいけないところ、またシングルクォーテーションにしないといけないところ、ダブルクォーテーションにしないといけないところを教えて頂けますでしょうか?もし両方OKならその違い等も教えていただけるとうれしいです。
以上宜しくお願いします。
No.1
- 回答日時:
テーブル名やフィールド名はバッククォーテーション「`」です。
値や文字列はシングルクォーテーションを使うのが一般的です。
シングルクォーテーションはダブルクォーテーションと同等ですが、
SQLは多くのプログラミング言語と連携してつかうケースが多く、
例えばPHPで書く場合
$sql="SELECT * FROM `hoge` WHERE `fuga`='$piyo'";
とするときれいにかけますが
$sql='SELECT * FROM `hoge` WHERE `fuga`="$piyo"';
としても$piyoは変数として処理されません。
これは多くのプログラム言語でシングルクォーテーションで括った
場合は変数を展開しないという決まりがあるからです。
したがってSQLではシングルクォーテーションを括り文字として
使った方がスマートです。
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では、「"」でなく「`」(バッククォーテション)を使用
文字コードでバッククォーテーションを使ったりダブルクォーテーションを使うことがあるんですね。ありがとうございました。とても参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと タイムマシンを破壊すべきか。
これはディベートの論題だと仮定したうえでの回答お願いします。あなたは、その末にタイムマシンを壊してしまうのか、使い道を探すのかどうかを考えてもらいたいです。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Oracleのシングルクォーテーション
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mysqlへのインポート処理がうま...
-
接続ができません
-
ODP.NETのバージョン確認
-
SQLのVARCHARとVARCHAR2の違い
-
MYSQLの文字化けについて
-
MYSQLで日本語が入力できない
-
insertでのエラーについて
-
データベースのフィールドのデ...
-
postgreSQLのデータ型
-
XAMPPのMySQLを外部から接続で...
-
泣きそうです>< PHPでSQLite3が...
-
like句を使って日本語を検索す...
-
select * outfileがうまくいき...
-
ユーティリティーとは?OPatch...
-
php・Mysql Like文で日本語が使...
-
ERROR 1045 (28000) (using pas...
-
オラクルのデータ型・通貨について
-
oracle、DB2、SqlServerのフィ...
-
ADOのバージョンを確認する方法
-
MYSQLサービス停止時にWindows...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysqlへのインポート処理がうま...
-
cseデータ閲覧時に文字化け
-
mysqlコマンドでSQL文が実行で...
-
文字列分割して、ソート出来ま...
-
ERROR 1054 (42S22) 原因不明です
-
シングルクォーテーションとダ...
-
SELECTした値との比較
-
MySQLでのデータ保存場所の変更
-
MySQLで困っています。。
-
mysql超初心者です。テーブルへ...
-
列名を式で指定することはでき...
-
MySQLに関して
-
PHP+mysql データ重複登録
-
postgre ⇒ mysql にした場合...
-
接続ができません
-
ODP.NETのバージョン確認
-
副問合せにLIKE文を使う方法は...
-
SQLのVARCHARとVARCHAR2の違い
-
MySQLカラム名は日本語と英数字...
-
like句を使って日本語を検索す...
おすすめ情報