Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ASCII()-Funktion in Oracle

In der Oracle-Datenbank das ASCII() Die Funktion gibt die Dezimaldarstellung des ersten Zeichens ihres Arguments im Datenbankzeichensatz zurück.

Syntax

Die Syntax sieht so aus:

ASCII(char)

Wobei char ist vom Datentyp CHAR , VARCHAR2 , NCHAR , oder NVARCHAR2 .

ASCII() gibt nur den numerischen ASCII-Wert des ersten Zeichens dieser Zeichenfolge zurück.

Beispiel

Hier ist ein einfaches Beispiel zur Veranschaulichung:

SELECT ASCII('Oracle')
FROM DUAL;

Ergebnis:

79

Dies sagt uns, dass der Großbuchstabe O hat den numerischen ASCII-Wert 79 .

Wie erwähnt, ASCII() gibt nur den ASCII-Wert des ersten zurück Charakter. Daher führt Folgendes zum selben Ergebnis:

SELECT ASCII('O')
FROM DUAL;

Ergebnis:

79

Um dies weiter zu demonstrieren, lassen Sie uns den numerischen ASCII-Wert aus jedem Buchstaben in der obigen Zeichenfolge abrufen:

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;

Ergebnis:

    O      r     a     c      l      e 
_____ ______ _____ _____ ______ ______ 
   79    114    97    99    108    101 

Groß-/Kleinschreibung

Großbuchstaben haben einen anderen ASCII-Wert als ihre Kleinbuchstaben.

Beispiel:

SELECT 
    ASCII('R') AS "R",
    ASCII('r') AS "r"
FROM DUAL;

Ergebnis:

    R      r 
_____ ______ 
   82    114

Ein Datenbankbeispiel

Hier ist ein Beispiel für die Verwendung von ASCII() in einer Datenbankabfrage:

SELECT 
  first_name, 
  ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;

Ergebnis:

   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 

Zeichen ganz rechts

Hier verwende ich den SUBSTR() Funktion, um das Zeichen ganz rechts von jedem Tiernamen zurückzugeben, und verwenden Sie es dann erneut mit ASCII() Funktion, um den ASCII-Wert für dieses Zeichen zurückzugeben.

SELECT 
  first_name, 
  SUBSTR(first_name, -1) AS "Rightmost character",
  ASCII(SUBSTR(first_name, -1)) AS "ASCII"
FROM employees
FETCH FIRST 10 ROWS ONLY;

Ergebnis:

   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

Leere Zeichenfolgen

Die Bereitstellung einer leeren Zeichenfolge führt zu null zurückgegeben.

SET NULL 'null';
SELECT ASCII('')
FROM DUAL;

Ergebnis:

   ASCII('') 
____________ 
        null

Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null tritt als Ergebnis eines SQL SELECT auf Erklärung.

Sie können jedoch SET NULL verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null zurückgegeben werden soll.

Nullwerte

Übergabe von null ergibt null :

SELECT ASCII(null)
FROM DUAL;

Ergebnis:

   ASCII(NULL) 
______________ 
          null

Fehlendes Argument

Der Aufruf der Funktion mit ohne Übergabe eines Arguments führt zu einem Fehler:

SELECT ASCII()
FROM DUAL;

Ergebnis:

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:

Das Gleiche gilt, wenn zu viele Argumente übergeben werden:

SELECT ASCII('a', 'b')
FROM DUAL;

Ergebnis:

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: