Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja ASCII() w Oracle

W bazie danych Oracle ASCII() funkcja zwraca reprezentację dziesiętną w zestawie znaków bazy danych pierwszego znaku swojego argumentu.

Składnia

Składnia wygląda tak:

ASCII(char)

Gdzie char ma typ danych CHAR , VARCHAR2 , NCHAR lub NVARCHAR2 .

ASCII() zwraca wartość numeryczną ASCII tylko pierwszego znaku tego ciągu.

Przykład

Oto prosty przykład do zademonstrowania:

SELECT ASCII('Oracle')
FROM DUAL;

Wynik:

79

To mówi nam, że wielka litera O ma wartość numeryczną ASCII 79 .

Jak wspomniano, ASCII() zwraca tylko wartość ASCII pierwszego postać. Dlatego poniższe daje ten sam wynik:

SELECT ASCII('O')
FROM DUAL;

Wynik:

79

Aby to dalej zademonstrować, weźmy liczbową wartość ASCII z każdej litery w powyższym ciągu:

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;

Wynik:

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

Wrażliwość na wielkość liter

Wielkie litery mają inną wartość ASCII niż ich małe odpowiedniki.

Przykład:

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

Wynik:

    R      r 
_____ ______ 
   82    114

Przykład bazy danych

Oto przykład użycia ASCII() w zapytaniu do bazy danych:

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

Wynik:

   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 

Postać z prawej strony

Tutaj używam SUBSTR() funkcja zwracająca skrajny prawy znak z każdego imienia zwierzaka, a następnie użyj go ponownie z ASCII() funkcja zwracająca wartość ASCII dla tego znaku.

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

Wynik:

   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

Puste ciągi

Dostarczenie pustego ciągu powoduje null zostanie zwrócony.

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

Wynik:

   ASCII('') 
____________ 
        null

Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.

Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.

Wartości puste

Przekazywanie null wyniki w null :

SELECT ASCII(null)
FROM DUAL;

Wynik:

   ASCII(NULL) 
______________ 
          null

Brakujący argument

Wywołanie funkcji with bez przekazania argumentu skutkuje błędem:

SELECT ASCII()
FROM DUAL;

Wynik:

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:

Tak samo jest, gdy przekazywanych jest zbyt wiele argumentów:

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

Wynik:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Odwróć ciąg słowo po słowie za pomocą SQL

  2. Jak używać MAX() w wyniku podzapytania?

  3. JDBC — Oracle ArrayIndexOutOfBoundsException

  4. Oracle SQL:Zrozumienie zachowania funkcji SYS_GUID() w widoku wbudowanym?

  5. Jak korzystać z Oracle SQL*Plus