定数 (Transact-SQL)

リテラル値またはスカラ値としても知られる定数は、特定のデータ値を表す記号です。定数の形式は、その定数が表す値のデータ型に依存します。

  • 文字列定数
    文字列定数では、英数字 (a ~ z、A ~ Z、および 0 ~ 9)、感嘆符 (!)、アット マーク (@)、および番号記号 (#) などの特殊文字を単一引用符で囲みます。COLLATE 句で照合順序を指定しない限り、文字列定数には現在のデータベースの既定の照合順序が割り当てられます。ユーザーが入力した文字列は、コンピュータのコード ページで評価され、必要に応じてデータベースの既定のコード ページに翻訳されます。

    接続に対して QUOTED_IDENTIFIER オプションが OFF に設定されている場合は、文字列を二重引用符で囲むこともできます。ただし、Microsoft SQL Server Native Client Provider と ODBC ドライバでは、自動的に SET QUOTED_IDENTIFIER ON が使用されます。単一引用符を使用することをお勧めします。

    単一引用符で囲まれた文字列に単一引用符を埋め込む場合は、単一引用符を 2 つ続けて並べることで 1 つの単一引用符を表します。文字列が二重引用符で囲まれている場合は該当しません。

    次に文字列の例を示します。

    'Cincinnati'
    'O''Brien'
    'Process X is 50% complete.'
    'The level for job_id: %d should be between %d and %d.'
    "O'Brien"
    

    空文字列は、2 つの単一引用符の間に何も挿入しないで表します。6.x 互換性モードでは、空文字列は 1 つのスペースと見なされます。

    文字列定数では、拡張照合順序がサポートされています。

    注意

    8,000 バイト以上の文字列定数は varchar(max) データ型に分類されます。

  • Unicode 文字列
    Unicode 文字列の形式は文字列と同様ですが、Unicode 文字列には前に識別子 N が付きます。N は、SQL-92 標準の National Language を表します。プレフィックス N は常に大文字になります。たとえば、'Michél' は文字定数、N'Michél' は Unicode 定数です。Unicode 定数は Unicode データとして解釈され、コード ページを使用した評価は行われません。Unicode 定数は照合順序を持ちます。この照合順序では主に比較と大文字小文字の区別が制御されます。COLLATE 句で照合順序を指定しない限り、Unicode 定数には現在のデータベースの既定の照合順序が割り当てられます。文字データでは 1 文字を 1 バイトで格納するのに対し、Unicode データでは 1 文字を 2 バイトで格納します。詳細については、「Unicode データの使用」を参照してください。

    Unicode 文字列定数では、拡張照合順序がサポートされています。

    注意

    8,000 バイト以上の Unicode 文字列定数は nvarchar(max) データ型に分類されます。

  • binary 型定数
    binary 型定数は 16 進数の文字列であり、0x というプレフィックスが付きます。引用符では囲みません。

    次に binary 型文字列の例を示します。

    0xAE
    0x12Ef
    0x69048AEFDD010E
    0x  (empty binary string)
    
    注意

    8,000 バイト以上の binary 型文字列は varbinary(max) データ型に分類されます。

  • bit 型定数
    bit 型定数は数値の 0 または 1 で表します。引用符では囲みません。bit 型定数に 1 より大きい数値を使用すると、その値は 1 に変換されます。

  • datetime 定数
    datetime 型定数は、特定の形式の日付文字値で表し、単一引用符で囲みます。datetime 型定数の形式の詳細については、「日時データの使用」を参照してください。

    次に datetime 型定数の例を示します。

    'December 5, 1985'
    '5 December, 1985'
    '851205'
    '12/5/98'
    

    次に時刻型定数の例を示します。

    '14:30:24'
    '04:24 PM'
    
  • integer 定数
    integer 型定数は数値文字列で表し、引用符では囲みません。また、小数点は含みません。integer 型定数は小数点を含まない整数である必要があります。

    次に integer 型定数の例を示します。

    1894
    2
    
  • decimal 定数
    decimal 型定数は、小数点を含む数値文字列で表し、引用符では囲みません。

    次に decimal 型定数の例を示します。

    1894.1204
    2.0
    
  • float 型定数と real 型定数
    float 型定数と real 型定数は科学的表記法で表します。

    次に float 型と real 型の値の例を示します。

    101.5E5
    0.5E-2
    
  • money 定数
    money 型定数は数値文字列で表し、オプションで小数点および通貨記号をプレフィックスとして付加することができます。money 型定数は、引用符では囲みません。

    SQL Server では、金額を表す文字列の 3 桁ごとにコンマ (,) を挿入するなどのグループ化ルールを設定することはできません。

    注意

    コンマは、指定された money リテラル内の任意の場所で無視されます。

    次に money 型定数の例を示します。

    $12
    $542023.14
    
  • uniqueidentifier 定数
    uniqueidentifier 型定数は、GUID 値を表す文字列です。文字型または binary 型文字列の形式で指定できます。

    次の例は、両方とも同じ GUID を指定しています。

    '6F9619FF-8B86-D011-B42D-00C04FC964FF'
    0xff19966f868b11d0b42d00c04fc964ff
    

負または正の数値の指定

数値が正であるか負であるかを示すには、数値型定数に + または - 単項演算子を付加します。この方法で、符号付き数値を表す数式を作成できます。数値型定数は、+ または - 単項演算子が付加されない場合、正の値になります。

  • 符号付き integer の式

    +145345234
    -2147483648
    
  • 符号付き decimal の式

    +145345234.2234
    -2147483648.10
    
  • 符号付き float の式

    +123E-3
    -12E5
    
  • 符号付き money の式

    -$45.56
    +$423456.99
    

拡張照合順序

SQL Server では、拡張照合順序をサポートする文字列定数および Unicode 文字列定数がサポートされています。詳細については、COLLATE (Transact-SQL) 句を参照してください。