====== ASCII_VAL() ====== ===== Версии сервера ===== ^ ^ 0.9 ^ 1.0 ^ 1.5.3 ^ 1.5.4 ^ 1.5.5 ^ 2.0 ^ 2.1 ^ 2.5 ^ 3.0 ^ ^Как [[UDF]] | Да | Да | Да | Да | Да | Да | - | - | - | ^Как встроенная функция | - | - | - | - | - | - | Да | Да | Да | ===== Доступно в ===== [[raznovidnosti_jazyka_sql|DSQL]], [[raznovidnosti_jazyka_sql|ISQL]], [[raznovidnosti_jazyka_sql|PSQL]] ===== Формат ===== ASCII_VAL( < аргумент > ) ^ Аргумент ^ Описание ^ | < аргумент > | [[tipy_dannyx|CHAR(1)]] одиночный символ | | Возвращает | [[tipy_dannyx|INTEGER]] - код символа в таблице символов кодировки. | ===== Описание ===== Функция ASCII_VAL возвращает код символа в таблице символов, переданного в качестве параметра < аргумент >. :!: В Firebird версии младше 2.1 для того, чтобы пользоваться этой функцией, ее небходимо подключить к базе данных как [[UDF]]. ===== Объявление ===== 1. В 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"; 2. В Firebird версии 2.1 и старше является встроенной функцией при соглашении объявления ее как: DECLARE EXTERNAL FUNCTION ASCII_VAL CHAR(1) RETURNS INTEGER BY VALUE ENTRY_POINT "ascii_val" MODULE_NAME SYSTEM; ===== Пример ===== Допустим, существует таблица CUSTOMERS с доменами ID [[tipy_dannyx|INTEGER]] и NAME [[tipy_dannyx|VARCHAR(80)]]. Требуется выбрать из таблицы все записи, упорядочив их по алфавиту, учтя при этом ошибки ввода данных, когда оператор ввода мог ошибиться и не может визуально заметить свою ошибку (например, отличить латинский символ "C" и русский символ "С", ввиду расположения их на клавиатуре). [[raznovidnosti_jazyka_sql|PSQL]] 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]], [[vstroennye_funkcii|Встроенные функции]] ===== Источник ===== langref.pdf