sql >> Databáze >  >> RDS >> Oracle

Funkce ASCII() v Oracle

V databázi Oracle je to ASCII() funkce vrací desetinnou reprezentaci prvního znaku svého argumentu v databázi znaků.

Syntaxe

Syntaxe vypadá takto:

ASCII(char) 

Kde char je datového typu CHAR , VARCHAR2 , NCHAR nebo NVARCHAR2 .

ASCII() vrátí číselnou hodnotu ASCII pouze prvního znaku tohoto řetězce.

Příklad

Zde je jednoduchý příklad k demonstraci:

SELECT ASCII('Oracle')
FROM DUAL; 

Výsledek:

79

To nám říká, že velké písmeno O má číselnou hodnotu ASCII 79 .

Jak již bylo zmíněno, ASCII() vrátí pouze hodnotu ASCII z prvního charakter. Proto následující způsobí stejný výsledek:

SELECT ASCII('O')
FROM DUAL; 

Výsledek:

79

Abychom to dále demonstrovali, získáme číselnou hodnotu ASCII z každého písmene ve výše uvedeném řetězci:

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; 

Výsledek:

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

Rozlišovat malá a velká písmena

Velká písmena mají jinou hodnotu ASCII než jejich malé ekvivalenty.

Příklad:

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

Výsledek:

 R r _____ ______ 82 114

Příklad databáze

Zde je příklad použití ASCII() v databázovém dotazu:

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

Výsledek:

 FIRST_NAME hodnota ASCII znaku zcela vlevo _____________ ___________________________________ Ellen 69 Sundar 83 Mozhe 77 David 68 Hermann 3 Amit 9 Salli 6 David 6 8 David 65 

Znak zcela vpravo

Zde používám SUBSTR() funkci vrátit znak úplně vpravo z každého jména domácího mazlíčka a poté jej znovu použít s ASCII() funkce vrátí hodnotu ASCII pro daný znak.

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

Výsledek:

 FIRST_NAME Znak zcela vpravo ASCII _____________ ______________________ ________ Ellen n 110 Sundar r 114 Mozhe e 101 David d 100 htd 104 Amit 104 Amit 11 0 David 

Prázdné řetězce

Poskytnutí prázdného řetězce má za následek null se vrací.

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

Výsledek:

 ASCII('') ____________ null

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Nulové hodnoty

Předávání null výsledkem je null :

SELECT ASCII(null)
FROM DUAL; 

Výsledek:

 ASCII(NULL) ______________ null

Chybí argument

Volání funkce s bez předání argumentu má za následek chybu:

SELECT ASCII()
FROM DUAL; 

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT ASCII()FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"*Příčina:*Akce:

Je to stejné, když je předáno příliš mnoho argumentů:

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

Výsledek:

Chyba začínající na řádku:1 v příkazu -SELECT ASCII('a', 'b')FROM DUALEchyba na příkazovém řádku:1 Sloupec:8Hlášení o chybě -Chyba SQL:ORA-00909:neplatný počet argumentů00909. 00000 - "neplatný počet argumentů"*Příčina:*Akce:

  1. Aktualizace nebo vložení (více řádků a sloupců) z poddotazu v PostgreSQL

  2. DROP TABLE, POKUD EXISTUJE v MariaDB

  3. Závažná chyba Wordpress:Nezachycená chyba:Volání nedefinované funkce mysql_connect() v /wp-includes/wp-db.php:1570

  4. Optimalizace TempDB:Předcházení úzkým místům a problémům s výkonem