W bazie danych Oracle ASCII()
funkcja zwraca reprezentację dziesiętną w zestawie znaków bazy danych pierwszego znaku swojego argumentu.
Składnia
Składnia wygląda tak:
ASCII(char)
Gdzie char
ma typ danych CHAR
, VARCHAR2
, NCHAR
lub NVARCHAR2
.
ASCII()
zwraca wartość numeryczną ASCII tylko pierwszego znaku tego ciągu.
Przykład
Oto prosty przykład do zademonstrowania:
SELECT ASCII('Oracle')
FROM DUAL;
Wynik:
79
To mówi nam, że wielka litera O
ma wartość numeryczną ASCII 79
.
Jak wspomniano, ASCII()
zwraca tylko wartość ASCII pierwszego postać. Dlatego poniższe daje ten sam wynik:
SELECT ASCII('O')
FROM DUAL;
Wynik:
79
Aby to dalej zademonstrować, weźmy liczbową wartość ASCII z każdej litery w powyższym ciągu:
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;
Wynik:
O r a c l e _____ ______ _____ _____ ______ ______ 79 114 97 99 108 101
Wrażliwość na wielkość liter
Wielkie litery mają inną wartość ASCII niż ich małe odpowiedniki.
Przykład:
SELECT
ASCII('R') AS "R",
ASCII('r') AS "r"
FROM DUAL;
Wynik:
R r _____ ______ 82 114
Przykład bazy danych
Oto przykład użycia ASCII()
w zapytaniu do bazy danych:
SELECT
first_name,
ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Wynik:
FIRST_NAME ASCII value of leftmost character _____________ ____________________________________ Ellen 69 Sundar 83 Mozhe 77 David 68 Hermann 72 Shelli 83 Amit 65 Elizabeth 69 Sarah 83 David 68
Postać z prawej strony
Tutaj używam SUBSTR()
funkcja zwracająca skrajny prawy znak z każdego imienia zwierzaka, a następnie użyj go ponownie z ASCII()
funkcja zwracająca wartość ASCII dla tego znaku.
SELECT
first_name,
SUBSTR(first_name, -1) AS "Rightmost character",
ASCII(SUBSTR(first_name, -1)) AS "ASCII"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Wynik:
FIRST_NAME Rightmost character ASCII _____________ ______________________ ________ Ellen 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 David d 100
Puste ciągi
Dostarczenie pustego ciągu powoduje null
zostanie zwrócony.
SET NULL 'null';
SELECT ASCII('')
FROM DUAL;
Wynik:
ASCII('') ____________ null
Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null
występuje w wyniku polecenia SQL SELECT
oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Wartości puste
Przekazywanie null
wyniki w null
:
SELECT ASCII(null)
FROM DUAL;
Wynik:
ASCII(NULL) ______________ null
Brakujący argument
Wywołanie funkcji with bez przekazania argumentu skutkuje błędem:
SELECT ASCII()
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT ASCII() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Tak samo jest, gdy przekazywanych jest zbyt wiele argumentów:
SELECT ASCII('a', 'b')
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT ASCII('a', 'b') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action: