Определение длины строки (в символах)

Функция

Определение длины строки в символах.

Спецификация
     
< синтаксис >::=
[CHAR_ |CHARACTER_]LENGTH (строка)
Общие правила
  1. < Строка > должно иметь тип CHAR, VARCHAR, NCHAR, NCHAR VARYING.

  2. < Строка > может быть задана < SQL-параметром >, который должен содержать спецификацию типа данных параметра.

    select char_length(? (char(20))), character_length(:param (char(10)));
    Тестовая строка
    Testing line
    |         15|         10|

  3. Для хранимых в таблицах значений CHAR, NCHAR длина считается по усечению концевых пробелов и UNICODE-пробелов соответственно.

  4. Функции CHARACTER_LENGTH, CHAR_LENGTH и LENGTH эквивалентны.

    select max(character_length(model)),
           max(char_length(model)),
           max(char_length(model)) from auto;
    | 20 | 20 | 20 |
Возвращаемое значение
  1. Для типа данных CHAR, NCHAR возвращается количество символов в < строке >, которое зависит от режима запуска ядра СУБД:

    • с ключом /COMPATIBILITY=STANDARD – концевые пробелы учитываются;

    • без ключа /COMPATIBILITY=STANDARD – концевые пробелы игнорируются.

    create or replace table tab1(c char(50));
    insert into tab1 values ('1234567890');
    ! с ключом  /COMPATIBILITY=STANDARD
    select length(c) from tab1;
    |           50|
    ! без ключа  /COMPATIBILITY=STANDARD
    select length(c) from tab1;
    |           10|

  2. Для типа данных VARCHAR, NCHAR VARYING – реальное количество символов в < строке > (независимо от ключа запуска /COMPATIBILITY=STANDARD).

  3. NULL, если < строка > имеет NULL-значение.

  4. Если < строка > имеет тип данных NCHAR, NCHAR VARYING, то возвращаемое значение равно L/2 символам, где L – длина < строки > в байтах.

  5. Тип возвращаемого значения – INT.

Пример
select rtrim(firstnam)+' '+ltrim(name) from person where length(name+firstnam)=(select max(length(name+firstnam)) from person);

| JEFFERSON SPARCK JONES |
| PHYLLIS PAPAYANOPOULOS |
| PHYLLIS PAPAYANOPOULOS |
| MAXWELL PAPAYANOPOULOS |

INL : number of rows shown: 4