SQLの一重引用符と二重引用符の違いは何ですか?
単一引用符は、SQLの文字列の開始と終了を示すために使用されます。 SQLでは通常、二重引用符は使用されませんが、データベースによって異なる場合があります。
単一引用符の使用に固執します。
とにかくそれが主な用途です。列のエイリアスには一重引用符を使用できます。アプリケーションコードで参照する列名を、データベースで実際に列が呼び出されるものとは異なる名前にする場合。たとえば、PRODUCT.id
はproduct_id
の方が読みやすいため、次のいずれかを使用します。
SELECT PRODUCT.id AS product_id
SELECT PRODUCT.id 'product_id'
どちらもOracle、SQL Server、MySQLで機能しますが、一重引用符を使用する場合、TOAD IDEが悲しみを与えると言っている人もいます。
列エイリアスにスペース文字(product id
など)が含まれる場合は、単一引用符を使用する必要がありますが、列エイリアスを複数のWordにすることはお勧めできません。
単一引用符は、文字列定数または日付/時刻定数を区切ります。
二重引用符は、たとえばテーブル名または列名。これは通常、識別子が単純な識別子のルールに適合しない場合にのみ必要です。
こちらもご覧ください:
MySQLでANSI標準ごとに二重引用符を使用することができます。
SET GLOBAL SQL_MODE=ANSI_QUOTES
Microsoft SQL ServerでANSI標準ごとに二重引用符を使用することができます。
SET QUOTED_IDENTIFIER ON
どの場合に使用するかを覚えておくための2つの簡単なルール:
ANSI SQLでは、二重引用符はオブジェクト名(テーブルなど)を引用します。これにより、他の方法では許可されていない文字を含めることができます。
単一引用符は文字列用です。
ただし、MySQLは(SQL_MODEが変更されていない限り)標準を無視しているため、文字列に互換的に使用できます。
さらに、SybaseとMicrosoftは、識別子の引用に角括弧も使用します。
したがって、ベンダー固有のビットです。
PostgresやIBMなどの他のデータベースは、実際にANSI標準に準拠しています:)
このニーモニックを使用します。
これは仕様に従って100%正確ではありませんが、このニーモニックは私(人間)を助けます。
違いは使用法にあります。単一引用符は、主にWHERE、HAVING、およびCONCAT、STRPOS、POSITIONなどの一部の組み込みSQL関数で文字列を参照するために使用されます。
間にスペースがあるエイリアスを使用する場合は、二重引用符を使用してそのエイリアスを参照できます。
例えば
(select account_id,count(*) "count of" from orders group by 1)sub
次に、account_idを外部キーとして持つ注文テーブルからのサブクエリを示します。これは、各アカウントの注文数を知るために集計しています。ここでは、目的のために「カウント」としてランダムな名前を1つの列に付けました。
次に、「count of」が20を超える行を表示する外部クエリを作成します。
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;
同じケースを共通テーブル式にも適用できます。