В Oracle Database, ASCII()
функцията връща десетичното представяне в набора от знаци на базата данни на първия знак от нейния аргумент.
Синтаксис
Синтаксисът е така:
ASCII(char)
Където char
е от тип данни CHAR
, VARCHAR2
, NCHAR
или NVARCHAR2
.
ASCII()
връща числовата ASCII стойност само на първия знак от този низ.
Пример
Ето един прост пример за демонстрация:
SELECT ASCII('Oracle')
FROM DUAL;
Резултат:
79
Това ни казва, че главната буква O
има числова ASCII стойност на 79
.
Както споменахме, ASCII()
връща само ASCII стойността на първата характер. Следователно, следното дава същия резултат:
SELECT ASCII('O')
FROM DUAL;
Резултат:
79
За да демонстрираме това допълнително, нека получим числовата ASCII стойност от всяка буква в горния низ:
SELECT
ASCII('O') AS "O",
ASCII('r') AS "r",
ASCII('a') AS "a",
ASCII('c') AS "c",
ASCII('l') AS "l",
ASCII('e') AS "e"
FROM DUAL;
Резултат:
O r a c l e _____ ______ _____ _____ ______ ______ 79 114 97 99 108 101
Чувствителност на регистрите
Главните букви имат различна ASCII стойност от техните еквиваленти с малки букви.
Пример:
SELECT
ASCII('R') AS "R",
ASCII('r') AS "r"
FROM DUAL;
Резултат:
R r _____ ______ 82 114
Пример за база данни
Ето пример за използване на ASCII()
в заявка към база данни:
SELECT
first_name,
ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Резултат:
FIRST_NAME ASCII стойност на най-левия знак _____________ ____________________________________ Елън 69 Сундар 83 Може 77 Дейвид 68 Херман 72 Шели 83 Амит 65 Елизабет 69 Сара 83 Дейвид 68
Най-десният знак
Тук използвам SUBSTR()
функция за връщане на най-десния знак от всяко име на домашен любимец и след това го използвайте отново с ASCII()
функция за връщане на ASCII стойността за този знак.
SELECT
first_name,
SUBSTR(first_name, -1) AS "Rightmost character",
ASCII(SUBSTR(first_name, -1)) AS "ASCII"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Резултат:
FIRST_NAME Най-десният знак ASCII _____________ ______________________ ________ Елън n 110 Sundar r 114 Mozhe e 101 David d 100 Hermann n 110 Shelli i 105 Amit t 116 Elizabeth h 104 Sarah h 104Празни низове
Предоставянето на празен низ води до
null
се връща.SET NULL 'null'; SELECT ASCII('') FROM DUAL;
Резултат:
ASCII('') ____________ нулаПо подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато
null
възниква в резултат на SQLSELECT
изявление.Можете обаче да използвате
SET NULL
за да посочите различен низ, който да бъде върнат. Тук посочих, че низътnull
трябва да бъдат върнати.Нулеви стойности
Предаването на
null
води доnull
:SELECT ASCII(null) FROM DUAL;
Резултат:
ASCII(NULL) ______________ нулаЛипсващ аргумент
Извикването на функцията с без подаване на аргумент води до грешка:
SELECT ASCII() FROM DUAL;
Резултат:
Грешка, започваща от ред:1 в командата -SELECT ASCII()FROM DUALEГрешка в командния ред:1 Колона:8Отчет за грешка -SQL грешка:ORA-00909:невалиден брой аргументи00909. 00000 - "невалиден брой аргументи"*Причина:*Действие:Същото е, когато се предават твърде много аргументи:
SELECT ASCII('a', 'b') FROM DUAL;
Резултат:
Грешка, започваща от ред:1 в командата -SELECT ASCII('a', 'b')FROM DUALE Грешка в командния ред:1 Колона:8Отчет за грешка -SQL Грешка:ORA-00909:невалиден брой аргументи00909. 00000 - "невалиден брой аргументи"*Причина:*Действие: