sql >> Database teknologi >  >> RDS >> Oracle

ASCII()-funktion i Oracle

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('') ____________ null

Som standard returnerer SQLcl og SQL*Plus et tomt mellemrum, når null opstår som et resultat af en SQL SELECT udmelding.

Du kan dog bruge SET NULL for at angive en anden streng, der skal returneres. Her specificerede jeg, at strengen null skal returneres.

Nul-værdier

Sender null resulterer i null :

SELECT ASCII(null)
FROM DUAL; 

Resultat:

 ASCII(NULL) ______________ null

Manglende 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:

  1. SQLiteStatement udfører en SELECT / INSERT / DELETE / UPDATE

  2. SQLite gruppe af

  3. Oracle SQL Developer og PostgreSQL

  4. Brug som jokertegn i udarbejdet erklæring