リテラル (Entity SQL)
このトピックでは、リテラルに関する Entity SQL のサポートについて説明します。
Null
NULL リテラルは、あらゆる型で NULL 値を表す際に使用されます。 NULL リテラルは、すべての型と互換性があります。
NULL リテラルをキャストすることによって、型指定された NULL を作成できます。 詳しくは、「CAST」をご覧ください。
型指定されない NULL リテラルを使用できる場合に関する規則については、「NULL リテラルと型推論」をご覧ください。
ブール型
ブール型リテラルは、true
と false
のキーワードで表されます。
整数型
整数リテラルには、Int32 型と Int64 型とがあります。 Int32 リテラルは、一連の数字で構成されます。 Int64 リテラルは、一連の数字で構成され、最後に大文字の L が付きます。
Decimal (10 進数型)
固定小数点数 (decimal) は、一連の数字、ドット (.)、および別の一連の数字で構成され、最後に大文字の "M" が付きます。
Float、Double
倍精度浮動小数点数は、一連の数字、ドット (.)、および別の一連の数字で構成され、場合によっては最後に指数が付きます。 単精度浮動小数点数 (float) は、倍精度浮動小数点数の構文に続けて小文字の f が付きます。
String
文字列は、引用符で囲まれた一連の文字です。 引用符には、単一引用符 ('
) または二重引用符 (") を使用できますが、両者を混在させることはできません。 文字列リテラルには、Unicode と非 Unicode のどちらでも使用できます。 文字列リテラルを Unicode として宣言するには、リテラルの前に大文字の "N" を付けます。 既定では、Unicode でない文字列リテラルです。 N と文字列リテラルの間に空白は含めません。また、N は大文字にする必要があります。
'hello' -- non-Unicode character string literal
N'hello' -- Unicode character string literal
"x"
N"This is a string!"
'so is THIS'
DateTime
datetime リテラルは、日付部分と時刻部分とで構成され、ロケールに依存しません。 日付部分と時刻部分のどちらも省略することはできず、既定値はありません。
日付部分は、YYYY
-MM
-DD
という形式になっている必要があります。YYYY
は 0001 から 9999 の 4 桁の年、MM
は 1 から 12 の月、DD
は特定の月 (MM
) に対して有効な日を表します。
時刻部分は HH
:MM
[:SS
[.fffffff]] の形式にする必要があります。ここで、HH
は 0 ~ 23 時の値、MM
は 0 ~ 59 分の値、SS
は 0 ~ 59 秒の値、fffffff は 0 ~ 9999999 の 1 秒未満部分の値を表します。 いずれも両端の値を含みます。 1 秒未満部分は省略可能です。 1 秒未満部分を指定しなければ、秒は省略可能です。1 秒未満部分を指定する場合、秒は必須です。 秒も 1 秒未満部分も指定しない場合は、既定値の 0 が使用されます。
DATETIME 記号とリテラル ペイロード間の空白の数に制限はありませんが、改行はできません。
DATETIME'2006-10-1 23:11'
DATETIME'2006-12-25 01:01:00.0000000' -- same as DATETIME'2006-12-25 01:01'
時刻
time リテラルは、時刻部分のみで構成され、ロケールに依存しません。 時刻部分は必須で、既定値はありません。 時刻部分は HH:MM[:SS[.fffffff]] の形式にする必要があります。ここで、HH は 0 ~ 23 時の値、MM は 0 ~ 59 分の値、SS は 0 ~ 59 秒の値、fffffff は 0 ~ 9999999 の 1 秒未満部分の値を表します。 いずれも両端の値を含みます。 1 秒未満部分は省略可能です。 1 秒未満部分を指定しなければ、秒は省略可能です。1 秒未満部分を指定する場合、秒は必須です。 秒も 1 秒未満部分も指定しない場合は、既定値の 0 が使用されます。
TIME 記号とリテラル ペイロード間の空白の数に制限はありませんが、改行はできません。
TIME'23:11'
TIME'01:01:00.1234567'
DateTimeOffset
datetimeoffset リテラルは、日付部分、時刻部分、およびオフセット部分で構成され、ロケールに依存しません。 日付部分、時刻部分、オフセット部分はすべて必須で、既定値はありません。 日付部分は YYYY-MM-DD の形式にする必要があります。ここで、YYYY は 0001 ~ 9999 の 4 桁の年、MM は 1 ~ 12 の月、DD は特定の月の有効な日付を表します。 時刻部分は HH:MM[:SS[.fffffff]] の形式にする必要があります。ここで、HH は 0 ~ 23 時の値、MM は 0 ~ 59 分の値、SS は 0 ~ 59 秒の値、fffffff は 0 ~ 9999999 の 1 秒未満部分の値を表します。 いずれも両端の値を含みます。 1 秒未満部分は省略可能です。 1 秒未満部分を指定しなければ、秒は省略可能です。1 秒未満部分を指定する場合、秒は必須です。 秒も 1 秒未満部分も指定しない場合は、既定値の 0 が使用されます。 オフセット部分は {+|-}HH:MM の形式にする必要があります。ここで、HH と MM は時刻部分と同じ意味ですが、 オフセットの範囲は -14:00 ~ + 14:00 でなければなりません。
DATETIMEOFFSET 記号とリテラル ペイロード間の空白の数に制限はありませんが、改行はできません。
DATETIMEOFFSET'2006-10-1 23:11 +02:00'
DATETIMEOFFSET'2006-12-25 01:01:00.0000000 -08:30'
Note
有効な Entity SQL リテラル値は、CLR またはデータ ソースに対してサポートされている範囲に含まれないことがあります。 その結果、例外が発生する可能性があります。
2 項
バイナリ文字列リテラルは、binary キーワードあるいは簡略記号 X
または x
と、それに続く単一引用符で囲まれた一連の 16 進数字で構成されます。 簡略記号 X
は、大文字と小文字は区別されません。 キーワード binary
と、バイナリ文字列値との間には、0 個以上の空白文字が許容されます。
16 進文字についても、大文字と小文字は区別されません。 リテラルが奇数個の 16 進数字で構成されていた場合、桁数が次に大きな偶数個となるように、先頭に 16 進数の 0 を付けることによって調整されます。 バイナリ文字列にサイズの制限はありません。
Binary'00ffaabb'
X'ABCabc'
BINARY '0f0f0f0F0F0F0F0F0F0F'
X'' –- empty binary string
GUID
GUID
リテラルは、グローバル一意識別子を表します。 キーワード GUID
の後に、"レジストリ" 形式と呼ばれる次のような形式の 16 進数字が続きます: 単一引用符で囲まれた 8-4-4-4-12。 16 進数字の大文字と小文字は区別されません。
GUID 記号とリテラル ペイロード間の空白の数に制限はありませんが、改行はできません。
Guid'1afc7f5c-ffa0-4741-81cf-f12eAAb822bf'
GUID '1AFC7F5C-FFA0-4741-81CF-F12EAAB822BF'