Trong Cơ sở dữ liệu Oracle, ASCII()
hàm trả về biểu diễn thập phân trong bộ ký tự cơ sở dữ liệu của ký tự đầu tiên trong đối số của nó.
Cú pháp
Cú pháp như sau:
ASCII(char)
Ở đâu char
thuộc loại dữ liệu CHAR
, VARCHAR2
, NCHAR
hoặc NVARCHAR2
.
ASCII()
chỉ trả về giá trị ASCII dạng số của ký tự đầu tiên của chuỗi này.
Ví dụ
Dưới đây là một ví dụ đơn giản để chứng minh:
SELECT ASCII('Oracle')
FROM DUAL;
Kết quả:
79
Điều này cho chúng ta biết rằng ký tự hoa O
có giá trị ASCII dạng số là 79
.
Như đã đề cập, ASCII()
chỉ trả về giá trị ASCII của đầu tiên tính cách. Do đó, điều sau tạo ra cùng một kết quả:
SELECT ASCII('O')
FROM DUAL;
Kết quả:
79
Để chứng minh thêm điều này, hãy lấy giá trị ASCII bằng số từ mỗi chữ cái trong chuỗi trên:
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;
Kết quả:
O r a c l e _____ ______ _____ _____ ______ ______ 79 114 97 99 108 101
Phân biệt chữ hoa chữ thường
Các chữ cái viết hoa có giá trị ASCII khác với giá trị chữ thường tương đương của chúng.
Ví dụ:
SELECT
ASCII('R') AS "R",
ASCII('r') AS "r"
FROM DUAL;
Kết quả:
R r _____ ______ 82 114
Một ví dụ về cơ sở dữ liệu
Đây là một ví dụ về việc sử dụng ASCII()
trong một truy vấn cơ sở dữ liệu:
SELECT
first_name,
ASCII(first_name) AS "ASCII value of leftmost character"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Kết quả:
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
Ký tự ngoài cùng bên phải
Ở đây, tôi sử dụng SUBSTR()
hàm để trả về ký tự ngoài cùng bên phải của mỗi tên vật nuôi, sau đó sử dụng lại ký tự đó với ASCII()
hàm trả về giá trị ASCII cho ký tự đó.
SELECT
first_name,
SUBSTR(first_name, -1) AS "Rightmost character",
ASCII(SUBSTR(first_name, -1)) AS "ASCII"
FROM employees
FETCH FIRST 10 ROWS ONLY;
Kết quả:
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
Chuỗi trống
Cung cấp một chuỗi trống dẫn đến null
được trả lại.
SET NULL 'null';
SELECT ASCII('')
FROM DUAL;
Kết quả:
ASCII('') ____________ null
Theo mặc định, SQLcl và SQL * Plus trả về một khoảng trống bất cứ khi nào null
xảy ra do một SELECT
trong SQL tuyên bố.
Tuy nhiên, bạn có thể sử dụng SET NULL
để chỉ định một chuỗi khác được trả về. Ở đây tôi đã chỉ định rằng chuỗi null
nên được trả lại.
Giá trị rỗng
Chuyển null
kết quả là null
:
SELECT ASCII(null)
FROM DUAL;
Kết quả:
ASCII(NULL) ______________ null
Thiếu đối số
Việc gọi hàm với mà không truyền đối số dẫn đến lỗi:
SELECT ASCII()
FROM DUAL;
Kết quả:
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:
Điều này cũng tương tự khi quá nhiều đối số được truyền:
SELECT ASCII('a', 'b')
FROM DUAL;
Kết quả:
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: