FirebirdSQL logo

CHAR_LENGTH(), CHARACTER_LENGTH()

Доступно в

DSQL, PSQL

Синтаксис
  CHAR_LENGTH (string)
| CHARACTER_LENGTH (string)
Table 1. Параметры функции CHAR_LENGTH
Параметр Описание

string

Выражение строкового типа.

Тип возвращаемого результата:

BIGINT

Функция CHAR_LENGTH возвращает длину (в символах) строки, переданной в качестве аргумента.

Note

С параметрами типа CHAR эта функция берет во внимание всю формальную строковую длину (например, объявленная длина поля или переменной). Если вы хотите получить “логическую” длину без учёта пробелов, то перед передачей аргумента в CHAR[ACTER]_LENGTH надо выполнить над ним операцию RIGHT TRIM.

HASH()

Доступно в

DSQL, PSQL

Синтаксис
HASH (str [USING <algorithm>])

<algorithm> ::= { CRC32 }
Table 1. Параметры функции HASH
Параметр Описание

str

Выражение строкового типа.

Тип возвращаемого результата:

BIGINT

Функция HASH возвращает некриптографический хэш входной строки.Эта функция полностью поддерживает текстовые BLOB любой длины и с любым набором символов.

Необязательное предложение USING определяет применяемый некриптографический алгоритм хеширования.Когда предложение USING отсутствует, применяется устаревший алгоритм PJW; это идентично его поведению в предыдущихверсиях Firebird.

Поддерживаемые алгоритмы:
не указан

Если алгоритм не указан, то используется 64-битный вариант некриптографическойхэш-функции PJW (также известной как ELF64).Эта функция очень быстра и может использоваться для общих целей (хеш-таблицы и т.д.), но имеет большое количество коллизий.Для более надежного хеширования следует использовать другие хеш-функции, явно указанные в предложении USING, или криптографические хеши с помощью [fblangref-scalarfuncs-crypthash].

Для этого алгоритма хеширования функция возвращает тип BIGINT.

CRC32

Если в предложении USING указан алгоритм CRC32, то Firebird применяет алгоритм CRC32, используя полином 0x04C11DB7.

Для этого алгоритма функция HASH возвращает результат с типом INTEGER.

Примеры HASH

Example 1. Вычисление хеша с алгоритмом PJW
SELECT HASH(x) FROM MyTable;
-- результат типа BIGINT
Example 2. Вычисление хеша с алгоритмом CRC32
SELECT HASH(x USING CRC32) FROM MyTable;
-- результат типа INTEGER

HEX_DECODE()

Доступно в

DSQL, PSQL

Синтаксис
HEX_DECODE (hex_data)
Table 1. Параметры функции HEX_DECODE
Параметр Описание

hex_data

Данные в шестнадцатеричном представлении.

Тип возвращаемого результата

VARBINARY или BLOB

Функция HEX_DECODE декодирует строку с шестнадцатеричными данными и возвращает декодированное значениекак VARBINARY или BLOB в зависимости от типа входного и размера аргумента.Если длина типа hex_data не кратна 2, во время подготовки возникает ошибка.Если длина значения hex_data не кратна 2, во время выполнения возникает ошибка.

Когда входной аргумент не является BLOB, то длина результирующего типа вычисляется как type_length / 2,где type_length — максимальная длина в байтах типа входного аргумента.