V databázi Oracle je to ASCII()
funkce vrací desetinnou reprezentaci prvního znaku svého argumentu v databázi znaků.
Syntaxe
Syntaxe vypadá takto:
ASCII(char)
Kde char
je datového typu CHAR
, VARCHAR2
, NCHAR
nebo NVARCHAR2
.
ASCII()
vrátí číselnou hodnotu ASCII pouze prvního znaku tohoto řetězce.
Příklad
Zde je jednoduchý příklad k demonstraci:
SELECT ASCII('Oracle')
FROM DUAL;
Výsledek:
79
To nám říká, že velké písmeno O
má číselnou hodnotu ASCII 79
.
Jak již bylo zmíněno, ASCII()
vrátí pouze hodnotu ASCII z prvního charakter. Proto následující způsobí stejný výsledek:
SELECT ASCII('O')
FROM DUAL;
Výsledek:
79
Abychom to dále demonstrovali, získáme číselnou hodnotu ASCII z každého písmene ve výše uvedeném řetězci:
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;
Výsledek:
O r a c l e _____ ______ _____ _____ ______ ______ 79 114 97 99 108 101
Rozlišovat malá a velká písmena
Velká písmena mají jinou hodnotu ASCII než jejich malé ekvivalenty.
Příklad:
SELECT
ASCII('R') AS "R",
ASCII('r') AS "r"
FROM DUAL;
Výsledek:
R r _____ ______ 82 114
Příklad databáze
Zde je příklad použití ASCII()
v databázovém dotazu:
SELECT
first_name,
ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Výsledek:
FIRST_NAME hodnota ASCII znaku zcela vlevo _____________ ___________________________________ Ellen 69 Sundar 83 Mozhe 77 David 68 Hermann 3 Amit 9 Salli 6 David 6 8 David 65Znak zcela vpravo
Zde používám
SUBSTR()
funkci vrátit znak úplně vpravo z každého jména domácího mazlíčka a poté jej znovu použít sASCII()
funkce vrátí hodnotu ASCII pro daný znak.SELECT first_name, SUBSTR(first_name, -1) AS "Rightmost character", ASCII(SUBSTR(first_name, -1)) AS "ASCII" FROM employees FETCH FIRST 10 ROWS ONLY;
Výsledek:
FIRST_NAME Znak zcela vpravo ASCII _____________ ______________________ ________ Ellen n 110 Sundar r 114 Mozhe e 101 David d 100 htd 104 Amit 104 Amit 11 0 DavidPrázdné řetězce
Poskytnutí prázdného řetězce má za následek
null
se vrací.SET NULL 'null'; SELECT ASCII('') FROM DUAL;
Výsledek:
ASCII('') ____________ nullVe výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když
null
dochází v důsledku SQLSELECT
prohlášení.Můžete však použít
SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězecnull
by měl být vrácen.Nulové hodnoty
Předávání
null
výsledkem jenull
:SELECT ASCII(null) FROM DUAL;
Výsledek:
ASCII(NULL) ______________ nullChybí argument
Volání funkce s bez předání argumentu má za následek chybu:
SELECT ASCII() FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT ASCII()FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"*Příčina:*Akce:Je to stejné, když je předáno příliš mnoho argumentů:
SELECT ASCII('a', 'b') FROM DUAL;
Výsledek:
Chyba začínající na řádku:1 v příkazu -SELECT ASCII('a', 'b')FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"*Příčina:*Akce: