Поделиться через


Литералы (язык Entity SQL)

В этом разделе рассматривается поддержка литералов в Entity SQL.

Null

Литерал NULL используется для представления значения NULL применительно к любому типу. Литерал NULL является совместимым с любым типом.

Типизированные значения NULL могут быть созданы путем применения операции приведения к типу по отношению к литералу NULL. Дополнительные сведения см. в разделе CAST (Entity SQL).

Правила, касающиеся того, где могут использоваться без ограничений литералы NULL в формате с плавающей запятой, см. в разделе Литералы NULL и определение типов (язык Entity SQL).

Логические

Логические литералы могут быть представлены с помощью ключевых слов true и false.

Целочисленные

Целочисленные литералы могут иметь тип Int32 или Int64. Литерал Int32 представляет собой ряд цифр. Литерал Int64 представляет собой ряд цифр, за которыми следует прописная буква L.

Десятичные

Число с фиксированной запятой (десятичное число) представляет собой ряд цифр, запятую (,) и еще один ряд цифр, за которыми следует прописная буква «М».

С плавающей запятой

Число с плавающей запятой двойной точности представляет собой ряд цифр, запятую (,) и еще один ряд цифр, за которыми может следовать показатель степени. Число с плавающей запятой одинарной точности (или просто число с плавающей запятой) представляет собой число с синтаксисом числа с плавающей запятой двойной точности, за которым следует строчная буква f.

Строковые

Строка — это ряд символов, заключенных в кавычки. Кавычки могут быть либо одинарными ('), либо двойными ("). Символьные строковые литералы могут быть представлены либо в Юникоде, либо в кодировке, отличной от Юникода. Чтобы объявить строковый литерал символа как Юникод, укажите букву «N» в верхнем регистре в качестве префикса литерала. По умолчанию строковые литералы символов находятся не в Юникоде. Не должно быть пробелов между буквой N и определением строкового литерала, а буква N должна быть в верхнем регистре.

'hello' -- non-Unicode character string literal
N'hello' -- Unicode character string literal
"x"
N"This is a string!"
'so is THIS'

Дата-время

Литерал даты-времени является не зависимым от языкового стандарта и состоит из части даты и части времени. Обе части — и даты, и времени — являются обязательными, и какие-либо значения по умолчанию не предусмотрены.

Часть даты должна иметь формат: YYYY-MM-DD, где YYYY представляет собой значение года из четырех цифр между 0001 и 9999, MM — месяц со значением от 1 до 12, а DD — значение суток, допустимое для данного месяца MM.

Часть времени должна иметь формат: HH:MM[:SS[.fffffff]], где HH представляет собой значение часа от 0 до 23 включительно, MM — значение минут от 0 до 59 включительно, SS — значение секунд от 0 до 59 включительно, а fffffff — значение миллисекунд от 0 до 9999999 включительно. Часть с обозначением миллисекунд является необязательной. Часть с обозначением секунд является необязательной, если только не используются миллисекунды. В этом случае секунды являются обязательными. Если секунды или миллисекунды не заданы, то по умолчанию используется значение нуль.

Между символом DATETIME и определением литерала может быть любое количество пробелов, но не может быть новых строк.

DATETIME'2006-10-1 23:11'
DATETIME'2006-12-25 01:01:00.0000000' -- same as DATETIME'2006-12-25 01:01'

Время

Литерал времени не зависит от языкового стандарта и состоит только из части времени. Часть времени является обязательной, она не имеет значения по умолчанию. Она должна иметь формат HH:MM[:SS[.fffffff]], где HH представляет собой значение часа от 0 до 23 включительно, MM — значение минут от 0 до 59 включительно, SS — значение секунд от 0 до 59 включительно, а fffffff — значение миллисекунд от 0 до 9999999 включительно. Часть с обозначением миллисекунд является необязательной. Часть с обозначением секунд является необязательной, если только не используются миллисекунды. В этом случае секунды являются обязательными. Если секунды или миллисекунды не заданы, то по умолчанию используется значение нуль.

Между символом TIME и определением литерала может быть любое количество пробелов, но не может быть новых строк.

TIME‘23:11’
TIME‘01:01:00.1234567’

DateTimeOffset

Литерал datetimeoffset не зависит от языковых стандартов и состоит из части даты, части времени и части смещения. Все части — даты, времени и смещения — являются обязательными, и какие-либо значения по умолчанию не предусмотрены. Часть даты должна иметь формат YYYY-MM-DD, где YYYY — это значение года от 0001 до 9999 включительно, MM — значение месяца от 1 до 12 включительно, а DD — значение дня, которое является допустимым для данного месяца. Часть времени должна иметь формат HH:MM[:SS[.fffffff]], где HH представляет собой значение часа от 0 до 23 включительно, MM — значение минут от 0 до 59 включительно, SS — значение секунд от 0 до 59 включительно, а fffffff — значение миллисекунд от 0 до 9999999 включительно. Часть с обозначением миллисекунд является необязательной. Часть с обозначением секунд является необязательной, если только не используются миллисекунды. В этом случае секунды являются обязательными. Если секунды или миллисекунды не заданы, то по умолчанию используется значение нуль. Часть смещения должна иметь формат {+|-}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 или источника данных. Это может привести к возникновению исключения.

Двоичные

Двоичный строковый литерал представляет собой последовательность шестнадцатеричных цифр, заключенную в одинарные кавычки, которая следует за ключевым словом binary или символом сокращения X. Обратите внимание, что как ключевое слово binary не зависит от регистра. Кроме того, допускается наличие от нуля или больше пробелов между ключевым словом binary и двоичным строковым значением.

Символ сокращения X должен представлять собой прописную букву, а какие-либо пробелы между символом X и двоичной строкой не допускаются. Шестнадцатеричные символы также являются нечувствительными к регистру. Если литерал состоит из нечетного количества шестнадцатеричных цифр, то литерал выравнивается вправо к следующей четной шестнадцатеричной цифре путем применения к нему префикса в виде шестнадцатеричной цифры ноль. На размер двоичной строки не распространяются какие-либо ограничения, определяемые форматом.

Пробелы между символом X и определением строкового литерала не допускаются, а символ X должен быть прописной буквой. Между символом BINARY и определением литерала может быть любое количество пробелов, но не может быть новых строк.

Binary'00ffaabb'
X'ABCabc'
BINARY    '0f0f0f0F0F0F0F0F0F0F'
X'' –- empty binary string

Guid

Литерал GUID представляет собой идентификатор GUID. Он является последовательностью, сформированной ключевым словом GUID, за которым следуют шестнадцатеричные цифры в форме, известной как формат реестра: цифры 8-4-4-4-12, заключенные в одинарные кавычки. Шестнадцатеричные цифры являются нечувствительными к регистру.

Между символом GUID и определением литерала может быть любое количество пробелов, но не может быть новых строк.

Guid'1afc7f5c-ffa0-4741-81cf-f12eAAb822bf'
GUID  '1AFC7F5C-FFA0-4741-81CF-F12EAAB822BF'

См. также

Основные понятия

Общие сведения о языке Entity SQL