sql >> Database >  >> RDS >> Oracle

ASCII()-functie in Oracle

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:

  1. Moet ik macro's of VBA-code gebruiken?

  2. milliseconden verwijderen uit een orakel tmstmp-veld

  3. PHP date() formaat bij het invoegen in datetime in MySQL

  4. Wat zijn de verschillen tussen Merge Join en Lookup-transformaties in SSIS?