Литералы
Функция
Определение постоянного не NULL-значения.
Спецификация
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
::=
Синтаксические правила
-
<Символьный литерал>
задает последовательность символов, начинающуюся и заканчивающуюся апострофом (одинарной кавычкой). Длина символьного литерала не более 4000 знаков. -
<Представление символа>
задает представление любого отображаемого символа, отличного от одинарной кавычки (' – апостроф). -
Типом данных
<символьного литерала>
является CHAR.<Символьный литерал>
имеет длину, равную числу содержащихся в нем символов.select length('литерал'); |7 |
-
Каждая одинарная кавычка внутри
<символьного литерала>
представляется как<одинарная кавычка>
(т.е. парой символов одинарных кавычек).select 'Трубы 1,5 дюйма: (1,5'''')'; |Трубы 1,5 дюйма: (1,5'')|
-
<Символьный литерал>
допускает нулевую длину (т.е. полное отсутствие символов).select length(''); |0 |
-
Представление
<символьного литерала>
может совпадать с ключевым словом.select 'table', 'create index'; |table |create index |
-
Типом данных
<шестнадцатеричного байтового литерала>
являетсяBYTE
. -
<Байтовый литерал>
задает последовательность байт, представленных в виде шестнадцатеричных чисел. Длина<байтового литерала>
не более 8000 шестнадцатеричных цифр. -
Шестнадцатеричная цифра представляет 4 бита.
Шестнадцатеричная цифра Битовое представление 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 A 1010 B 1011 C 1100 D 1101 E 1110 F 1111 -
Буквенное представление цифр (A-F) задается буквами латинского алфавита на любом регистре (верхнем или нижнем).
select 0x3C, cast X'020000000000001A22124B2006000000' as byte(16); | 60| 02 00 00 00 00 00 00 1A 22 12 4B 20 06 00 00 00| hex('CFF0') – битовая маска '1100111111110000' 0x0A0D – символы «Перевод строки» (LF), «Возврат каретки» (CR) 0xB0B0B0B0 – представление графических ASCII-символов ░░░░
Примечание
Если из контекста ясно, что литерал должен иметь тип
NCHAR
илиNCHAR VARYING
, то его значение автоматически преобразуется к этому типу. -
<Шестнадцатеричный байтовый литерал>
имеет длину, равную числу содержащихся в нем байт.select length(hex('00ffac0d')); |4 |
-
<Шестнадцатеричный байтовый литерал>
допускает нулевую длину (т.е. полное отсутствие байт).select length(hex('')); |0 |
-
Каждый байт в
<шестнадцатеричном байтовом литерале>
представляется строго двумя шестнадцатеричными цифрами. -
Если количество шестнадцатеричных цифр в литерале нечетное, по умолчанию недостающая цифра считается равной 0.
select cast hex('F') as byte(1), hex('f2'); |F0|F2|
-
<Шестнадцатеричный числовой литерал>
задает допустимое целочисленное значение. Если количество шестнадцатеричных цифр в литерале нечетное, по умолчанию недостающая цифра считается равной 0.select 0x45af3d; |4566845 |
-
Максимальная длина
<шестнадцатеричного байтового литерала>
4000 байт. -
При использовании
<шестнадцатеричного байтового литерала>
в конструкции CAST результат преобразования зависит от длины литерала:-
если длина меньше или равна 8 байт, он преобразуется в тип данных integer (обратный порядок байт в байтовом представлении integer);
-
если длина больше 8 байт, он преобразуется в байтовую строку.
select cast 0xFFF0 as integer, cast 0xFFF0ac456745dd45abcd as varbyte(5); |65520 |FF0AC4567|
-
-
Типом данных
<двоичного байтового литерала>
являетсяBYTE
. -
<Двоичный байтовый литерал>
задает последовательность байт, представленных в виде двоичных чисел. Длина<двоичного литерала>
не более 32000 двоичных цифр.select b'11111111000000011000001'; |FF0182|
-
<Двоичный байтовый литерал>
имеет длину, равную числу содержащихся в нем байт.select length(b'10010011'); |1|
-
<Двоичный байтовый литерал>
допускает нулевую длину (т.е. полное отсутствие байт).select length(b''); |0 |
-
Каждый байт в
<двоичном байтовом литерале>
представляется восемью двоичными цифрами. Если количество двоичных цифр в литерале не кратно 8, по умолчанию недостающие цифры считаются равными 0.select b'1', b'10000000'; |80 |80|
-
<Двоичный числовой литерал>
задает допустимое целочисленное значение. Если количество двоичных цифр в литерале не кратно 8, по умолчанию недостающие цифры считаются равными 0.select 0b0101111,cast 0b0101111 as byte(1); |94 |5e|
select -0b0101111, cast -0b0101111 as byte(1), cast (256-94) as byte(1); |-94 |a2|a2|
-
<Точный числовой литерал>
может иметь тип данныхDECIMAL
(DEC
,NUMERIC
),BIGINT
,INTEGER
(INT
) илиSMALLINT
. -
<Точный числовой литерал>
типаBIGINT
,INTEGER
(INT
) илиSMALLINT
задает число со знаком или без знака, максимум 19 цифр, которые не включают десятичную точку. -
Тип данных целочисленного литерала определяется величиной.
Диапазон значения Тип литерала от -32 768 до +32 767 SMALLINT
от -2 147 483 648 до +2 147 483 647 INT
Примечание
При необходимости может быть сконвертирован в SMALLINT. Если не помещается в эти границы – рассматривается как BIGINT
от -9 223 372 036 854 775 808
до +9 223 372 036 854 775 807
BIGINT
-
<Точный числовой литерал>
имеет точность, равную количеству цифр в его представлении. Масштаб<точного числового литерала>
определяется количеством цифр после реальной или подразумеваемой десятичной точки. -
<Точный числовой литерал>
типаDECIMAL
задает знаковое или беззнаковое десятичное число с общим количеством цифр не более 30 и максимум 10 цифр после возможной десятичной точки. Точность литерала – общее число цифр в его представлении (включая лидирующие и завершающие нули). Масштаб – число цифр справа от десятичной точки (включая младшие нули). -
<Точный числовой литерал>
может не содержать десятичную точку, которая подразумевается за последней цифрой. В этом случае литерал представляет целое значение.select 5, 5., 5.0,0.5,.5; |5 |5.0 |5.0 |0.5 |0.5 |
-
<Приближенный числовой литерал>
всегда рассматривается как DOUBLE, хотя при необходимости может быть сконвертирован в REAL. -
Точность
<приближенного числового литерала>
типаREAL
– 6 десятичных цифр, точность<приближенного числового литерала>
типаDOUBLE
– 15 десятичных цифр. -
<Приближенный числовой литерал>
задает вещественное десятичное число, представленное в виде мантиссы и характеристики (стандартное математическое представление). Первое число (мантисса) может включать знак и десятичную точку; второе число (характеристика) – только знак (без десятичной точки). Значением литерала является произведение характеристики и значения мантиссы в степени 10.select -333111e-3,.555E+3; |-333.111 |555 |
-
<Дата-время литерал>
символьный литерал в одном из допустимых форматов <представления даты>. Для явного преобразования его в значение DATE необходимо использовать конструкцию cast, например:cast '28.04.1950' as date.
Неявное преобразование
<дата-время литералов>
к типу DATE выполняется при вставке их значений в столбцы типа DATE или при сравнении их со значениями типа DATE, например:select $$$s13, rowtime from $$$sysrl where rowtime > '19.10.2011';
-
В
<дата-время литерале>
DD представляет день месяца (число от 1 до 31), MM – номер месяца (число от 1 до 12), MON – первые три буквы названия месяца, [YY] – номер века, YY – год века, HH – количество часов (число от 0 до 24), MI – количество минут (число от 0 до 59), SS – количество секунд (число от 0 до 59), FF – количество тиков (число от 0 до 99).'13-11-1992' '11/13/92:7:30' '27.3.2003:15:45'
'28-апр-50' '1875-01-12' '1-sep-2003:24:03:35:88'
-
В
<дата-время литерале>
допускается задавать параметры одной цифрой.select '8-5-39:2:5:'; |8-5-39:2:5: |
-
Если показания времени опущены, то дата считается введенной на момент времени 0 HH 0 MI 0 SS 0 FF (0 час. 0 мин. 0 сек. 0 тиков). Если не указаны цифры, обозначающие век, а YY<38, то считается XXI век Н.Э. (т.е. [YY]=20), иначе – XX век Н.Э. (т.е. [YY]=19).
select to_char('18-05-19','dd.mm.yyyy'), to_char('18-05-39','dd.mm.yyyy'); |18.05.2019 |18.05.1939 |
-
Следующие форматы
<дата-время литерала>
являются форматами по умолчанию, т.е. распознаются автоматически:-
DD.MM.[YY]YY[:[HH:[MI:[SS.[FF]]]];
-
MM/DD/[YY]YY[:[HH:[MI:[SS.[FF]]]];
-
DD-MON-[YY]YY[:[HH:[MI:[SS.[FF]]]];
-
YYYY-MM-DD[:[HH:[MI:[SS.[FF]]]].
create or replace table tab (d1 date default '25.01.2013:15:22:32.11'); create or replace table tab (d1 date default '01/25/2013:15:22:32.11'); create or replace table tab (d1 date default '25-AUG-2013:15:22:32.11'); create or replace table tab (d1 date default '2003-01-25:15:22:32.11');
-
-
<Логический литерал> можно задавать в одинарных кавычках: 'TRUE', 'true', 'FALSE', 'false' и т.п.
create or replace table tb (b boolean default 'TRUE'); insert into tb default values; insert into tb values ('true'); insert into tb values ('false'); select rowid, b from tb where b = 'True'; select rowid, b from tb where b = 'False';