Литералы

Функция

Определение постоянного не NULL-значения.

Спецификация

                               
< символьный литерал >::=
< представление символа >::=
< одинарная кавычка >::=
' '
< шестнадцатеричный байтовый литерал >::=
< шестнадцатеричный числовой литерал >::=
< двоичный байтовый литерал >::=
< двоичный числовой литерал >::=
< двоичная цифра >::=
0 | 1
< UNICODE-литерал >::=
< целочисленный литерал >::=
< точный числовой литерал >::=
< приближенный числовой литерал >::=
< экспонента >::=
< беззнаковое целое >::=
< дата-время литерал >::=
< представление даты >::=
< формат 1 >::=
DD-MM-[YY]YY[:HH[:MI[:SS[.FF]]]]
< формат 2 >::=
MM/DD/[YY]YY[:HH[:MI[:SS[.FF]]]]
< формат 3 >::=
DD.MM.[YY]YY[:HH[:MI[:SS[.FF]]]]
< формат 4 >::=
DD-MON-[YY]YY[:HH[:MI[:SS[.FF]]]]
< формат 5 >::=
YYYY-MM-DD[:HH[:MI[:SS[.FF]]]]
< формат 6 >::=
YYYYMMDD
< логический литерал >::=
TRUE | true | 'TRUE' | 'true'| FALSE | false | 'FALSE' | 'false'

Синтаксические правила

  1. < Символьный литерал > задает последовательность символов, начинающуюся и заканчивающуюся апострофом (одинарной кавычкой). Длина символьного литерала не более 4000 знаков.

  2. < Представление символа > задает представление любого отображаемого символа, отличного от одинарной кавычки (' – апостроф).

  3. Типом данных < символьного литерала > является CHAR. < Символьный литерал > имеет длину, равную числу содержащихся в нем символов.

    select length('литерал');
    |7 |
  4. Каждая одинарная кавычка внутри < символьного литерала > представляется как < одинарная кавычка > (т.е. парой символов одинарных кавычек).

    select 'Трубы 1,5 дюйма: (1,5'''')';
    |Трубы 1,5 дюйма: (1,5'')|
  5. < Символьный литерал > допускает нулевую длину (т.е. полное отсутствие символов).

    select length('');
    |0 |
  6. Представление < символьного литерала > может совпадать с ключевым словом.

    select 'table', 'create index';
    |table |create index |
  7. Типом данных < шестнадцатеричного байтового литерала > является BYTE.

  8. < Байтовый литерал > задает последовательность байт, представленных в виде шестнадцатеричных чисел. Длина < байтового литерала > не более 8000 шестнадцатеричных цифр.

  9. Шестнадцатеричная цифра представляет 4 бита.

    Шестнадцатеричная цифраБитовое представление
    00000
    10001
    20010
    30011
    40100
    50101
    60110
    70111
    81000
    91001
    A1010
    B1011
    C1100
    D1101
    E1110
    F1111
  10. Буквенное представление цифр (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, то его значение автоматически преобразуется к этому типу.

  11. < Шестнадцатеричный байтовый литерал > имеет длину, равную числу содержащихся в нем байт.

    select length(hex('00ffac0d'));
    |4 |
  12. < Шестнадцатеричный байтовый литерал > допускает нулевую длину (т.е. полное отсутствие байт).

    select length(hex(''));
    |0 |
  13. Каждый байт в < шестнадцатеричном байтовом литерале > представляется строго двумя шестнадцатеричными цифрами.

  14. Если количество шестнадцатеричных цифр в литерале нечетное, по умолчанию недостающая цифра считается равной 0.

    select cast hex('F') as byte(1), hex('f2');
    |F0|F2|
  15. < Шестнадцатеричный числовой литерал > задает допустимое целочисленное значение. Если количество шестнадцатеричных цифр в литерале нечетное, по умолчанию недостающая цифра считается равной 0.

    select 0x45af3d;
    |4566845 |
  16. Максимальная длина < шестнадцатеричного байтового литерала > 4000 байт.

  17. При использовании < шестнадцатеричного байтового литерала > в конструкции CAST результат преобразования зависит от длины литерала:

    • если длина меньше или равна 8 байт, он преобразуется в тип данных integer (обратный порядок байт в байтовом представлении integer);

    • если длина больше 8 байт, он преобразуется в байтовую строку.

      select cast 0xFFF0 as integer, cast 0xFFF0ac456745dd45abcd as varbyte(5);
      |65520 |FF0AC4567|
  18. Типом данных < двоичного байтового литерала > является BYTE.

  19. < Двоичный байтовый литерал > задает последовательность байт, представленных в виде двоичных чисел. Длина < двоичного литерала > не более 32000 двоичных цифр.

    select b'11111111000000011000001';
    |FF0182|
  20. < Двоичный байтовый литерал > имеет длину, равную числу содержащихся в нем байт.

    select length(b'10010011');
    |1|
  21. < Двоичный байтовый литерал > допускает нулевую длину (т.е. полное отсутствие байт).

    select length(b'');
    |0 |
  22. Каждый байт в < двоичном байтовом литерале > представляется восемью двоичными цифрами. Если количество двоичных цифр в литерале не кратно 8, по умолчанию недостающие цифры считаются равными 0.

    select b'1', b'10000000';
    |80 |80|
  23. < Двоичный числовой литерал > задает допустимое целочисленное значение. Если количество двоичных цифр в литерале не кратно 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|
  24. < Точный числовой литерал > может иметь тип данных DECIMAL (DEC, NUMERIC), BIGINT, INTEGER (INT) или SMALLINT.

  25. < Точный числовой литерал > типа BIGINT, INTEGER (INT) или SMALLINT задает число со знаком или без знака, максимум 19 цифр, которые не включают десятичную точку.

  26. Тип данных целочисленного литерала определяется величиной.

    Диапазон значенияТип литерала
    от -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
  27. < Точный числовой литерал > имеет точность, равную количеству цифр в его представлении. Масштаб < точного числового литерала > определяется количеством цифр после реальной или подразумеваемой десятичной точки.

  28. < Точный числовой литерал > типа DECIMAL задает знаковое или беззнаковое десятичное число с общим количеством цифр не более 30 и максимум 10 цифр после возможной десятичной точки. Точность литерала – общее число цифр в его представлении (включая лидирующие и завершающие нули). Масштаб – число цифр справа от десятичной точки (включая младшие нули).

  29. < Точный числовой литерал > может не содержать десятичную точку, которая подразумевается за последней цифрой. В этом случае литерал представляет целое значение.

    select 5, 5., 5.0,0.5,.5;
    |5 |5.0 |5.0 |0.5 |0.5 |
  30. < Приближенный числовой литерал > всегда рассматривается как DOUBLE, хотя при необходимости может быть сконвертирован в REAL.

  31. Точность < приближенного числового литерала > типа REAL – 6 десятичных цифр, точность < приближенного числового литерала > типа DOUBLE – 15 десятичных цифр.

  32. < Приближенный числовой литерал > задает вещественное десятичное число, представленное в виде мантиссы и характеристики (стандартное математическое представление). Первое число (мантисса) может включать знак и десятичную точку; второе число (характеристика) – только знак (без десятичной точки). Значением литерала является произведение характеристики и значения мантиссы в степени 10.

    select -333111e-3,.555E+3;
    |-333.111 |555 |
  33. < Дата-время литерал > символьный литерал в одном из допустимых форматов < представления даты >. Для явного преобразования его в значение DATE необходимо использовать конструкцию cast, например:

    cast '28.04.1950' as date.

    Неявное преобразование < дата-время литералов > к типу DATE выполняется при вставке их значений в столбцы типа DATE или при сравнении их со значениями типа DATE, например:

    select $$$s13, rowtime from $$$sysrl where rowtime  > '19.10.2011';
  34. В < дата-время литерале > 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'
  35. В < дата-время литерале > допускается задавать параметры одной цифрой.

    select '8-5-39:2:5:';
    |8-5-39:2:5: |
  36. Если показания времени опущены, то дата считается введенной на момент времени 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 |
  37. Следующие форматы < дата-время литерала > являются форматами по умолчанию, т.е. распознаются автоматически:

    • 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');
  38. < Логический литерал > можно задавать в одинарных кавычках: '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';