W bazie danych Oracle ASCIISTR()
funkcja zwraca wersję ASCII podanego ciągu w zestawie znaków bazy danych.
Składnia
Składnia wygląda następująco:
ASCIISTR(char)
Gdzie char
jest ciągiem lub wyrażeniem, które jest tłumaczone na ciąg, w dowolnym zestawie znaków.
Znaki spoza zestawu ASCII są konwertowane do postaci \xxxx
, gdzie xxxx
reprezentuje jednostkę kodu UTF-16.
Przykład
Oto przykład:
SELECT ASCIISTR('Fish')
FROM DUAL;
Wynik:
Fish
W tym przypadku wynik jest taki sam jak dane wejściowe, ponieważ dane wejściowe używały znaków ASCII.
Oto inny, który używa znaków spoza zestawu ASCII:
SELECT ASCIISTR('ปลา')
FROM DUAL;
Wynik:
\0E1B\0E25\0E32
Tutaj otrzymujemy każdy z trzech znaków zwróconych w ich odpowiednikach ASCII.
W tym przypadku dane wejściowe (ปลา
) to tajskie słowo oznaczające „rybę”. Można to wymówić jako „Plā”.
Oto, co się dzieje, gdy przekazujemy Plā
do ASCIISTR()
funkcja:
SELECT ASCIISTR('Plā')
FROM DUAL;
Wynik:
Pl\0101
W tym przypadku pierwsze dwa przekazane znaki są znakami ASCII, ale trzeci znak jest inny niż ASCII. Dlatego funkcja zwraca pierwsze dwa znaki bez zmian, a trzeci przekonwertowany na ASCII.
Oto kolejny, który przechodzi น้ำ
, co jest tajskim słowem oznaczającym „wodę”:
SELECT ASCIISTR('น้ำ')
FROM DUAL;
Wynik:
\0E19\0E49\0E33
Wartości puste
Jeśli argument jest null
, wynik to null
:
SET NULL 'null';
SELECT ASCIISTR(null)
FROM DUAL;
Wynik:
null
Domyślnie SQLcl i SQL*Plus zwracają spację za każdym razem, gdy w wyniku SELECT
wystąpi wartość null 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ć.
Nieprawidłowa liczba argumentów
Wywołanie ASCIISTR()
bez żadnych argumentów powoduje błąd:
SELECT ASCIISTR()
FROM DUAL;
Wynik:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"