In Oracle Database, de ASCII()
functie retourneert de decimale representatie in de database-tekenset van het eerste teken van zijn argument.
Syntaxis
De syntaxis gaat als volgt:
ASCII(char)
Waar char
is van het gegevenstype CHAR
, VARCHAR2
, NCHAR
, of NVARCHAR2
.
ASCII()
retourneert de numerieke ASCII-waarde van alleen het eerste teken van deze tekenreeks.
Voorbeeld
Hier is een eenvoudig voorbeeld om te demonstreren:
SELECT ASCII('Oracle')
FROM DUAL;
Resultaat:
79
Dit vertelt ons dat de hoofdletter O
heeft de numerieke ASCII-waarde 79
.
Zoals vermeld, ASCII()
retourneert alleen de ASCII-waarde van de eerste karakter. Daarom geeft het volgende hetzelfde resultaat:
SELECT ASCII('O')
FROM DUAL;
Resultaat:
79
Laten we, om dit verder te demonstreren, de numerieke ASCII-waarde halen uit elke letter in de bovenstaande reeks:
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;
Resultaat:
O r a c l e _____ ______ _____ _____ ______ ______ 79 114 97 99 108 101
Hoofdlettergevoeligheid
Hoofdletters hebben een andere ASCII-waarde dan hun kleine letters.
Voorbeeld:
SELECT
ASCII('R') AS "R",
ASCII('r') AS "r"
FROM DUAL;
Resultaat:
R r _____ ______ 82 114
Een databasevoorbeeld
Hier is een voorbeeld van het gebruik van ASCII()
in een databasequery:
SELECT
first_name,
ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Resultaat:
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
Rechterste karakter
Hier gebruik ik de SUBSTR()
functie om het meest rechtse teken van elke koosnaam terug te geven, en gebruik het dan opnieuw met de ASCII()
functie om de ASCII-waarde voor dat teken te retourneren.
SELECT
first_name,
SUBSTR(first_name, -1) AS "Rightmost character",
ASCII(SUBSTR(first_name, -1)) AS "ASCII"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Resultaat:
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
Lege snaren
Het verstrekken van een lege string resulteert in null
wordt geretourneerd.
SET NULL 'null';
SELECT ASCII('')
FROM DUAL;
Resultaat:
ASCII('') ____________ null
Standaard retourneren SQLcl en SQL*Plus een spatie wanneer null
treedt op als resultaat van een SQL SELECT
uitspraak.
U kunt echter SET NULL
. gebruiken om een andere tekenreeks op te geven die moet worden geretourneerd. Hier heb ik gespecificeerd dat de string null
moet worden geretourneerd.
Null-waarden
Doorgeven van null
resulteert in null
:
SELECT ASCII(null)
FROM DUAL;
Resultaat:
ASCII(NULL) ______________ null
Ontbrekend argument
Het aanroepen van de functie met zonder een argument door te geven resulteert in een fout:
SELECT ASCII()
FROM DUAL;
Resultaat:
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:
Het is hetzelfde als er te veel argumenten worden doorgegeven:
SELECT ASCII('a', 'b')
FROM DUAL;
Resultaat:
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: