I Oracle Database er ASCII()
funktion returnerer decimalrepræsentationen i databasens tegnsæt af det første tegn i dets argument.
Syntaks
Syntaksen ser sådan ud:
ASCII(char)
Hvor char
er af datatypen CHAR
, VARCHAR2
, NCHAR
eller NVARCHAR2
.
ASCII()
returnerer kun den numeriske ASCII-værdi af det første tegn i denne streng.
Eksempel
Her er et simpelt eksempel til at demonstrere:
SELECT ASCII('Oracle')
FROM DUAL;
Resultat:
79
Dette fortæller os, at det store bogstav O
har den numeriske ASCII-værdi 79
.
Som nævnt, ASCII()
returnerer kun ASCII-værdien af den første Karakter. Følgende giver derfor det samme resultat:
SELECT ASCII('O')
FROM DUAL;
Resultat:
79
For at demonstrere dette yderligere, lad os få den numeriske ASCII-værdi fra hvert bogstav i ovenstående streng:
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;
Resultat:
O r a c l e _____ ______ _____ _____ ______ ______ 79 114 97 99 108 101
Skrivar og bogstaver
Store bogstaver har en anden ASCII-værdi end deres små bogstaver.
Eksempel:
SELECT
ASCII('R') AS "R",
ASCII('r') AS "r"
FROM DUAL;
Resultat:
R r _____ ______ 82 114
Et databaseeksempel
Her er et eksempel på brug af ASCII()
i en databaseforespørgsel:
SELECT
first_name,
ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Resultat:
FIRST_NAME ASCII-værdien af karakteren længst til venstre _____________ ____________________________________ Ellen 69 Sundar 83 Mozhe 77 David 68 Hermann 72 Shelli 83 Amit 65 Elizabeth 69 Sarah 83 David 68
Lyst til højre
Her bruger jeg SUBSTR()
funktion til at returnere tegnet længst til højre fra hvert kæledyrsnavn og derefter bruge det igen med ASCII()
funktion for at returnere ASCII-værdien for det pågældende tegn.
SELECT
first_name,
SUBSTR(first_name, -1) AS "Rightmost character",
ASCII(SUBSTR(first_name, -1)) AS "ASCII"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Resultat:
FIRST_NAME Tegn længst til højre 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 1004 David d>Tomme strenge
Angivelse af en tom streng resulterer i
null
bliver returneret.SET NULL 'null'; SELECT ASCII('') FROM DUAL;
Resultat:
ASCII('') ____________ nullSom standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når
null
opstår som et resultat af en SQLSELECT
udmelding.Du kan dog bruge
SET NULL
for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengennull
skal returneres.Nul-værdier
Sender
null
resulterer inull
:SELECT ASCII(null) FROM DUAL;
Resultat:
ASCII(NULL) ______________ nullManglende argument
Kaldning af funktionen uden at sende et argument resulterer i en fejl:
SELECT ASCII() FROM DUAL;
Resultat:
Fejl starter på linje :1 i kommando -SELECT ASCII()FROM DUALE Fejl ved kommandolinje :1 Kolonne :8Fejlrapport -SQL-fejl:ORA-00909:ugyldigt antal argumenter00909. 00000 - "ugyldigt antal argumenter"*Årsag:*Handling:Det er det samme, når der sendes for mange argumenter:
SELECT ASCII('a', 'b') FROM DUAL;
Resultat:
Fejl starter på linje:1 i kommando -SELECT ASCII('a', 'b')FRA DUALEfejl på kommandolinje:1 Kolonne:8Fejlrapport -SQL-fejl:ORA-00909:ugyldigt antal argumenter00909. 00000 - "ugyldigt antal argumenter"*Årsag:*Handling: