Литералы
Функция
Определение постоянного не 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';