ASCII_VAL()
Версии сервера
| 0.9 | 1.0 | 1.5.3 | 1.5.4 | 1.5.5 | 2.0 | 2.1 | 2.5 | 3.0 | |
|---|---|---|---|---|---|---|---|---|---|
| Как UDF | Да | Да | Да | Да | Да | Да | - | - | - |
| Как встроенная функция | - | - | - | - | - | - | Да | Да | Да |
Доступно в
Формат
ASCII_VAL( < аргумент > )
| Аргумент | Описание |
|---|---|
| < аргумент > | CHAR(1) одиночный символ |
| Возвращает | INTEGER - код символа в таблице символов кодировки. |
Описание
Функция ASCII_VAL возвращает код символа в таблице символов, переданного в качестве параметра < аргумент >.
⚠️ В Firebird версии младше 2.1 для того, чтобы пользоваться этой функцией, ее небходимо подключить к базе данных как UDF.
Объявление
- В Firebird версии младше 2.1 функция объявляется как UDF в внешнем модуле “ib_udf”.
DECLARE EXTERNAL FUNCTION ASCII_VAL
CHAR(1)
RETURNS
INTEGER BY VALUE
ENTRY_POINT "IB_UDF_ascii_val" MODULE_NAME "ib_udf";
- В Firebird версии 2.1 и старше является встроенной функцией при соглашении объявления ее как:
DECLARE EXTERNAL FUNCTION ASCII_VAL
CHAR(1)
RETURNS
INTEGER BY VALUE
ENTRY_POINT "ascii_val" MODULE_NAME SYSTEM;
Пример
Допустим, существует таблица CUSTOMERS с доменами ID INTEGER и NAME VARCHAR(80).
Требуется выбрать из таблицы все записи, упорядочив их по алфавиту, учтя при этом ошибки ввода данных, когда оператор ввода мог ошибиться и не может визуально заметить свою ошибку (например, отличить латинский символ “C” и русский символ “С”, ввиду расположения их на клавиатуре).
SET TERM !!!;
CREATE OR ALTER PROCEDURE CUST_ORDER_LIST RETURNS (
ORDER_ID INTEGER
,CUST_NAME VARCHAR(80)
)AS
BEGIN
FOR
SELECT C.NAME
FROM CUSTOMERS C
INTO :CUST_NAME
DO
BEGIN
ORDER_ID = ASCII_VAL( SUBSTRING(:CUST_NAME FROM 1 FOR 1) );
SUSPEND;
END
END !!!
SET TERM ; !!!
И далее мы вибираем упорядоченные записи :
SELECT PR.ORDER_ID, PR CUT_NAME
FROM CUST_ORDER_LIST PR
ORDER BY PR.ORDER_ID
См. также
SUBSTRING(), UDF, Встроенные функции
Источник
langref.pdf
Обсуждение