リテラル (Entity SQL)
このトピックでは、リテラルに関する Entity SQL のサポートについて説明します。
Null
NULL リテラルは、あらゆる型で NULL 値を表す際に使用されます。NULL リテラルは、すべての型と互換性があります。
NULL リテラルをキャストすることによって、型指定された NULL を作成できます。詳細については、「CAST (Entity SQL)」を参照してください。
どのような場合に型指定されない NULL リテラルを使用できるかの規則については、「NULL リテラルと型の推論 (Entity SQL)」を参照してください。
Boolean
ブール型リテラルは、true と false のキーワードで表されます。
Integer
整数リテラルには、Int32 型と Int64 型とがあります。Int32 リテラルは、一連の数字で構成されます。Int64 リテラルは、一連の数字で構成され、最後に大文字の L が付きます。
Decimal
固定小数点数 (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
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’
[!メモ]
有効な Entity SQL リテラル値は、CLR またはデータ ソースに対してサポートされている範囲に含まれないことがあります。その結果、例外が発生する可能性があります。
Binary
バイナリ文字列リテラルは、binary キーワードまたは簡略記号 X と、それに続く単一引用符で囲まれた一連の 16 進数字で構成されます。キーワードとして、binary は大文字と小文字が区別されます。また、キーワード binary と、バイナリ文字列値との間には、0 個以上の空白文字が許容されます。
簡略記号 X は大文字にする必要があり、X とバイナリ文字列との間に空白を含めることはできません。16 進文字についても、大文字と小文字は区別されません。リテラルが奇数個の 16 進数字で構成されていた場合、桁数が次に大きな偶数個となるように、先頭に 16 進数の 0 を付けることによって調整されます。バイナリ文字列にサイズの制限はありません。
X 記号と文字列リテラル ペイロードの間に空白を含めることはできません。X は大文字にする必要があります。BINARY 記号とリテラル ペイロード間の空白の数に制限はありませんが、改行はできません。
Binary'00ffaabb'
X'ABCabc'
BINARY '0f0f0f0F0F0F0F0F0F0F'
X'' –- empty binary string
Guid
GUID リテラルは、グローバル一意識別子を表します。キーワード GUID の後に、単一引用符で囲まれた 8-4-4-4-12 形式 (レジストリ形式) の 16 進数字が続きます。16 進数字の大文字と小文字は区別されません。
GUID 記号とリテラル ペイロード間の空白の数に制限はありませんが、改行はできません。
Guid'1afc7f5c-ffa0-4741-81cf-f12eAAb822bf'
GUID '1AFC7F5C-FFA0-4741-81CF-F12EAAB822BF'