sql >> Databasteknik >  >> RDS >> Oracle

ASCII()-funktion i Oracle

I Oracle Database, ASCII() funktion returnerar decimalrepresentationen i databasens teckenuppsättning för det första tecknet i dess argument.

Syntax

Syntaxen ser ut så här:

ASCII(char) 

Där char är av datatypen CHAR , VARCHAR2 , NCHAR , eller NVARCHAR2 .

ASCII() returnerar det numeriska ASCII-värdet för endast det första tecknet i denna sträng.

Exempel

Här är ett enkelt exempel att visa:

SELECT ASCII('Oracle')
FROM DUAL; 

Resultat:

79

Detta talar om för oss att den stora bokstaven O har det numeriska ASCII-värdet 79 .

Som nämnts, ASCII() returnerar endast ASCII-värdet för den första karaktär. Följande ger därför samma resultat:

SELECT ASCII('O')
FROM DUAL; 

Resultat:

79

För att demonstrera detta ytterligare, låt oss få det numeriska ASCII-värdet från varje bokstav i ovanstående sträng:

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 

Skaftkänslighet

Versaler har ett annat ASCII-värde än sina gemener.

Exempel:

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

Resultat:

 R r _____ ______ 82 114

Ett databasexempel

Här är ett exempel på hur du använder ASCII() i en databasfråga:

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

Resultat:

 FIRST_NAME ASCII-värde för karaktären längst till vänster _____________ ____________________________________ Ellen 69 Sundar 83 Mozhe 77 David 68 Hermann 72 Shelli 83 Amit 65 Elizabeth 69 Sarah 83 David 68 

Tecken längst till höger

Här använder jag SUBSTR() funktion för att returnera tecknet längst till höger från varje husdjursnamn och använd det sedan igen med ASCII() funktion för att returnera ASCII-värdet för det tecknet.

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 Karaktären längst till höger 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> 

Tömma strängar

Att tillhandahålla en tom sträng resulterar i null returneras.

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

Resultat:

 ASCII('') ____________ null

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Nullvärden

Skickar null resulterar i null :

SELECT ASCII(null)
FROM DUAL; 

Resultat:

 ASCII(NULL) ______________ null

Argument saknas

Att anropa funktionen utan att skicka ett argument resulterar i ett fel:

SELECT ASCII()
FROM DUAL; 

Resultat:

Fel som börjar på rad:1 i kommandot -SELECT ASCII()FROM DUALError på kommandoraden:1 Kolumn:8Felrapport -SQL-fel:ORA-00909:ogiltigt antal argument00909. 00000 - "ogiltigt antal argument"*Orsak:*Åtgärd:

Det är samma sak när för många argument skickas:

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

Resultat:

Fel som börjar på rad:1 i kommandot -SELECT ASCII('a', 'b')FRÅN DUALFel vid kommandoraden:1 Kolumn:8Felrapport -SQL-fel:ORA-00909:ogiltigt antal argument00909. 00000 - "ogiltigt antal argument"*Orsak:*Åtgärd:

  1. Fråga efter data genom att sammanfoga två tabeller i två databaser på olika servrar

  2. MySQL Workbench:Fel i fråga (1064):Syntaxfel nära "VISIBLE" på rad 1

  3. ett antal för varje join - optimering

  4. MySQL:Ogiltig användning av gruppfunktionen