Các hàm xử lý chuỗi trong Oracle
Xem thêm các chuyên mục:

Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.


Hàm ASCII là hàm của Oracle PL/SQL trả về mã số đại diện cho một ký tự.
Cú pháp:
ASCII( p_character )
Tham số:
p_character
- Ký tự truyền vào để lấy ra mã số của nó. Nếu truyền vào nhiều hơn một ký tự, hàm ASCII sẽ trả về mã số của ký tự đầu tiên và bỏ qua các ký tự khác.

Xem thêm bảng mã ASCII:
Hệ cơ số 10 (Dec) |
Hệ cơ số 16 (Hex) |
Hệ cơ số 8 (Oct) |
Ký tự | Mô tả | Hệ cơ số 10 (Dec) |
Hệ cơ số 16 (Hex) |
Hệ cơ số 8 (Oct) |
Ký tự | Mô tả | |
0 | 0 | 0 | null | 64 | 40 | 100 | @ | |||
1 | 1 | 1 | start of heading | 65 | 41 | 101 | A | |||
2 | 2 | 2 | start of text | 66 | 42 | 102 | B | |||
3 | 3 | 3 | end of text | 67 | 43 | 103 | C | |||
4 | 4 | 4 | end of transmission | 68 | 44 | 104 | D | |||
5 | 5 | 5 | enquiry | 69 | 45 | 105 | E | |||
6 | 6 | 6 | acknowledge | 70 | 46 | 106 | F | |||
7 | 7 | 7 | bell | 71 | 47 | 107 | G | |||
8 | 8 | 10 | backspace | 72 | 48 | 110 | H | |||
9 | 9 | 11 | horizontal tab | 73 | 49 | 111 | I | |||
10 | A | 12 | new line | 74 | 4A | 112 | J | |||
11 | B | 13 | vertical tab | 75 | 4B | 113 | K | |||
12 | C | 14 | new page | 76 | 4C | 114 | L | |||
13 | D | 15 | carriage return | 77 | 4D | 115 | M | |||
14 | E | 16 | shift out | 78 | 4E | 116 | N | |||
15 | F | 17 | shift in | 79 | 4F | 117 | O | |||
16 | 10 | 20 | data link escape | 80 | 50 | 120 | P | |||
17 | 11 | 21 | device control 1 | 81 | 51 | 121 | Q | |||
18 | 12 | 22 | device control 2 | 82 | 52 | 122 | R | |||
19 | 13 | 23 | device control 3 | 83 | 53 | 123 | S | |||
20 | 14 | 24 | device control 4 | 84 | 54 | 124 | T | |||
21 | 15 | 25 | negative acknowledge | 85 | 55 | 125 | U | |||
22 | 16 | 26 | synchronous idle | 86 | 56 | 126 | V | |||
23 | 17 | 27 | end of trans. block | 87 | 57 | 127 | W | |||
24 | 18 | 30 | cancel | 88 | 58 | 130 | X | |||
25 | 19 | 31 | end of medium | 89 | 59 | 131 | Y | |||
26 | 1A | 32 | substitute | 90 | 5A | 132 | Z | |||
27 | 1B | 33 | escape | 91 | 5B | 133 | [ | |||
28 | 1C | 34 | file separator | 92 | 5C | 134 | \ | |||
29 | 1D | 35 | group separator | 93 | 5D | 135 | ] | |||
30 | 1E | 36 | record separator | 94 | 5E | 136 | ^ | |||
31 | 1F | 37 | unit separator | 95 | 5F | 137 | _ | |||
32 | 20 | 40 | space | 96 | 60 | 140 | ` | |||
33 | 21 | 41 | ! | 97 | 61 | 141 | a | |||
34 | 22 | 42 | " | 98 | 62 | 142 | b | |||
35 | 23 | 43 | # | 99 | 63 | 143 | c | |||
36 | 24 | 44 | $ | 100 | 64 | 144 | d | |||
37 | 25 | 45 | % | 101 | 65 | 145 | e | |||
38 | 26 | 46 | & | 102 | 66 | 146 | f | |||
39 | 27 | 47 | ' | 103 | 67 | 147 | g | |||
40 | 28 | 50 | ( | 104 | 68 | 150 | h | |||
41 | 29 | 51 | ) | 105 | 69 | 151 | i | |||
42 | 2A | 52 | * | 106 | 6A | 152 | j | |||
43 | 2B | 53 | + | 107 | 6B | 153 | k | |||
44 | 2C | 54 | , | 108 | 6C | 154 | l | |||
45 | 2D | 55 | - | 109 | 6D | 155 | m | |||
46 | 2E | 56 | . | 110 | 6E | 156 | n | |||
47 | 2F | 57 | / | 111 | 6F | 157 | o | |||
48 | 30 | 60 | 0 | 112 | 70 | 160 | p | |||
49 | 31 | 61 | 1 | 113 | 71 | 161 | q | |||
50 | 32 | 62 | 2 | 114 | 72 | 162 | r | |||
51 | 33 | 63 | 3 | 115 | 73 | 163 | s | |||
52 | 34 | 64 | 4 | 116 | 74 | 164 | t | |||
53 | 35 | 65 | 5 | 117 | 75 | 165 | u | |||
54 | 36 | 66 | 6 | 118 | 76 | 166 | v | |||
55 | 37 | 67 | 7 | 119 | 77 | 167 | w | |||
56 | 38 | 70 | 8 | 120 | 78 | 170 | x | |||
57 | 39 | 71 | 9 | 121 | 79 | 171 | y | |||
58 | 3A | 72 | : | 122 | 7A | 172 | z | |||
59 | 3B | 73 | ; | 123 | 7B | 173 | { | |||
60 | 3C | 74 | < | 124 | 7C | 174 | | | |||
61 | 3D | 75 | = | 125 | 7D | 175 | } | |||
62 | 3E | 76 | > | 126 | 7E | 176 | ~ | |||
63 | 3F | 77 | ? | 127 | 7F | 177 | DEL |
Hàm COALESCE trả về biểu thức đầu tiên khác null trong danh sách. Nếu tất cả các biểu thức trong danh sách đánh giá đều NULL, thì hàm COALESCE sẽ trả về NULL.
Cú pháp:
COALESCE( p_expression1, p_expression2, ... p_expressionN )
Tham số:
- p_expression1, p_expression2, .. p_expressionN
- Các biểu thức để kiểm tra khác null.
Ví dụ:
-- --> 'Abc'
Select COALESCE(null, 'Abc', '123') as Column1 from dual;
-- --> 'Aaa'
Select COALESCE('Aaa', null, '345') as Column1 from dual;
-- --> 'Sss'
Select COALESCE(null, null, null, 'Sss') as Column1 from dual;

Hàm UPPER sẽ chuyển tất cả các chữ trong p_string thành chữ hoa
Cú pháp:
UPPER( p_string )
Tham số:
p_string
- Là chuỗi (string) sẽ được chuyển đổi thành chữ hoa.
Ví dụ:
-- --> TOM CAT
Select Upper('Tom Cat') From Dual;
-- --> TOM CAT
Select Upper('tom cat') From Dual;
Hàm LOWER chuyển đổi tất cả các chữ trong p_string thành chữ thường.
Cú pháp:
LOWER( p_string )
Tham số:
p_string
- Chuỗi (string) sẽ được chuyển thành chữ thường.
Ví dụ:
-- --> tom cat
Select Lower('Tom Cat') From Dual;
-- --> tom cat
Select Lower('tom cat') From Dual;
Hàm INITCAP trả về một chuỗi ký tự với các chữ cái đầu tiên của mỗi từ được chuyển đổi thành chữ hoa (Cũng được gọi là "title case"). Tất cả các chữ khác trong chuỗi sẽ được chuyển thành chữ thường. Các từ được ngăn cách nhau bởi dấu trắng (white space) (spaces, tabs, carriage returns, formfeeds, vertical-tabs, newlines) hoặc các ký tự không phải là chữ và số.
Cú pháp:
INITCAP( p_string )
Tham số:
p_string
- Chuỗi (string) tham số mà toàn bộ các ký tự đầu tiên của mỗi từ sẽ chuyển thành chữ hoa, và các chữ còn lại trong từ sẽ chuyển thành chữ thường.
Ví dụ:
-- --> Tom Cat
Select Initcap('TOM CAT') From Dual;
-- --> Tom Cat
Select Initcap('tom cat') From Dual;
Hàm CHR trả về ký tự ASCII tương ứng với giá trị được truyền vào tham số cho nó. Nếu chỉ định thêm NCHAR_CS, nó sẽ trả về ký tự tương ứng theo mã của một quốc gia nào đó.
Cú pháp:
CHR( p_number )
CHR( p_number using nchar_cs)
Tham số:
p_number
- Số được truyền vào để lấy ra ký tự tương ứng.
Ví dụ:
-- --> @
Select chr(64) From dual;
-- --> A
Select chr(65) From dual;
-- --> â
Select chr(50082) From dual;
-- --> 쎢
Select chr(50082 using nchar_cs) From dual;
Hàm CONCAT cho phép bạn nối 2 string với nhau.
Cú pháp:
CONCAT( p_string1, p_string2 )
Tham số:
p_string1
- string đầu tiên dùng để nối.
- string thứ 2 dùng để nối.
Ví dụ:
-- --> Tom Cat
Select Concat('Tom ', 'Cat') From dual;
Hàm CONCAT cho phép bạn nối 2 chuỗi với nhau.
Cú pháp:
CONCAT( p_string1, p_string2 )
- CONCAT(CLOB, NCLOB) returns NCLOB
- CONCAT(NCLOB, NCHAR) returns NCLOB
- CONCAT(NCLOB, CHAR) returns NCLOB
- CONCAT(NCHAR, CLOB) returns NCLOB
Tham số:
p_string1
- string đầu tiên để nối
- string thứ hai để nối.
Ví dụ:
Declare
C1 Clob := To_Clob('Tom ');
C2 Clob := To_Clob('Cat');
C3 Clob;
C4 Clob;
Begin
Select Concat(C1
,C2)
Into C3
From Dual;
----
-- --> Tom Cat
Dbms_Output.Put_Line(C3);
----
C4 := Concat(C1
,C2);
-- --> Tom Cat
Dbms_Output.Put_Line(C4);
End;
Hàm INSTR trả về vị trí của một chuỗi con trong một chuỗi cho trước.
Cú pháp:
INSTR( p_string, p_substring [, p_start_position [, p_occurrence ] ] )
p_string
- Tìm trên chuỗi này. p_string có thể là CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, hoặc NCLOB.
- Chuỗi con sẽ tìm trong p_string. p_substring có thể là CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, hoặc NCLOB.
- Tham số không bắt buộc. Là vị trí bắt đầu tìm kiếm trong p_string. Nếu không sử dụng tham số này, mặc định nó là 1. Vị trí đầu tiên trong string là 1. Nếu p_start_position có giá trị âm, Hàm INSTR sẽ đếm ngược p_start_position ký tự từ cuối chuỗi, và tìm kiếm tiếng tới đầu của chuỗi.
- Tham số không bắt buộc. Đếm lần xuất hiện thứ p_occurrence của p_substring, nếu không sử dụng tham số này, mặc định nó là 1.
Nếu không tìm thấy p_substring ở trong p_string, hàm INSTR sẽ trả về 0.
Ví dụ:

-- --> 14
Select Instr('Corporate Floor', 'or', 5, 2) as Column1 from dual;
-- --> 5
Select Instr('Corporate Floor', 'or', -10) as Column1 from dual;
Xem thêm:
Hàm INSTRB trả về vị trí của chuỗi con trong một chuỗi cho trước, sử dụng các byte thay vì các ký tự.
Cú pháp:
INSTRB (p_string , p_substring [, p_start_position [, p_occurrence]])
Hàm INSTRB trả về vị trí tìm thấy p_substring trong p_string, sử dụng cách tìm theo byte thay vì tìm theo ký tự.
Tham số:
p_string
- Tìm kiếm trong chuỗi này.
- Chuỗi sẽ tìm
- Một số nguyên khác 0 chỉ định vị trí byte sẽ bắt đầu tìm kiếm. Nếu p_start_position có giá trị âm, thì hàm INSTRB sẽ tìm kiếm ngược từ cuối chuỗi. Giá trị mặc định của vị trí là 1, có nghĩa là chức năng bắt đầu tìm kiếm tại các byte đầu tiên của chuỗi.
- Một số nguyên chỉ định số lần xuất hiện của chuỗi cần tìm. Giá trị của nó phải là số dương. Các giá trị mặc định của p_occurrence là 1, có nghĩa là tìm kiếm vị trí xuất hiện đầu tiên của chuỗi cần tìm.
Nếu không tìm thấy p_substring ở trong p_string, hàm INSTRB sẽ trả về 0.
-- --> 6
Select Instrb('Tiếng Việt', 'n') from dual;
-- --> 11
Select Instrb('Tiếng Việt', 'ệ' ,5) from dual;

Xem thêm:
Cú pháp:
LENGTH( p_string )
Tham số:
p_string (CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB)
- Là chuỗi các ký tự, cần tìm kiếm độ dài. Nếu p_string là NULL hoặc rỗng, hàm LENGTH sẽ trả về NULL.
Ví dụ:
-- --> 7
Select Length('Tom Cat') As Column1 From Dual;

Hàm LENGTHB trả về độ dài của một chuỗi, sử dụng cách đếm số byte thay vì đếm số ký tự.
Cú pháp:
LENGTHB( p_string )
Tham số:
p_string (CHAR, VARCHAR2, NCHAR, NVARCHAR2)
- string cần kiểm tra độ dài (theo bytes).
Ví dụ:
-- Null - Null
Select Lengthb(Null) Column1
,Lengthb('') Column2
From Dual;
-- 7
Select Lengthb('Tom Cat') Column1 From dual;
-- 2
Select Lengthb('Â') As Column1 From Dual;

-- length of characters
-- --> 10
Select Length('Tiếng Việt') from dual;
-- length of bytes
-- --> 14
Select Lengthb('Tiếng Việt') from dual;

Hàm LPAD thêm vào bên trái chuỗi một tập hợp các ký tự cho trước.
Cú pháp:
LPAD( p_string, p_padded_length [, p_pad_string] )
Tham số:
p_string
- string sẽ được đệm thêm các ký tự vào bên trái nó.
- Độ dài của string sau khi được đệm thêm vào. Nếu p_padded_length nhỏ hơn độ dài của string ban đầu (p_string), hàm LPAD sẽ cắt cụt string ban đầu, bỏ bên phải, để có được độ dài p_padded_length.
- Tham số không bắt buộc. Đây là string dùng để đệm vào bên trái của p_string. Nếu tham số này không được sử dụng, hàm LPAD sẽ đệm vào các khoảng trắng vào bên trái của p_string.
Ví dụ:
-- 00123
Select Lpad('123', 5, '0') From Dual;
-- 12345
Select Lpad('1234567', 5, '0') From Dual;
-- ' Tom'
Select Lpad('Tom', 10) From Dual;
-- 'To'
Select Lpad('Tom', 2) From Dual;

Hàm LTRIM sẽ loại bỏ các khoảng trắng bên trái (leading spaces) của một string ban đầu. Ký tự khoảng trắng là mặc định để loại bỏ, tuy nhiên bạn có thể chỉ định các ký tự để loại bỏ. Các ký tự được chỉ định là các chuỗi chữ ('A', 'm',..) hoặc CHR tương đương. Ví dụ 'CHR(112)', 'CHR(68)'.
Hàm LTRIM trả về kiểu VARCHAR2.
Hàm LTRIM trả về kiểu VARCHAR2.
Cú pháp:
LTRIM( p_string [, p_trim_string] )
Tham số:
p_string
- string sẽ được loại bỏ các ký tự bên trái của nó.
- Tham số không bắt buộc. Là chuỗi sẽ được loại bỏ ở bên trái của p_string. Nếu tham số này không được sử dụng, hàm LTRIM sẽ loại bỏ các ký tự trắng ra khỏi bên trái của p_string.
Ví dụ:
-- --> TOM
Select LTRIM(' TOM') From dual;
-- --> 789
Select LTRIM('000789', '0') From Dual;
-- --> ABC01
Select LTRIM('0101ABC01', '01') From dual;
-- --> 4210ABC
Select LTRIM('34210ABC', '0123') From dual;

Hàm RTRIM sẽ loại bỏ các khoảng trắng bên phải (trailing spaces) của một string ban đầu. Ký tự khoảng trắng là mặc định để loại bỏ, tuy nhiên bạn có thể chỉ định các ký tự để loại bỏ. Các ký tự được chỉ định là các chuỗi chữ ('A', 'm',..) hoặc CHR tương đương: 'CHR(112)', 'CHR(68)'.
Hàm RTRIM trả về kiểu VARCHAR2.
Hàm RTRIM trả về kiểu VARCHAR2.
Cú pháp:
RTRIM( p_string [, trim_string ] )
Tham số
p_string
- string sẽ được loại bỏ các ký tự bên phải của nó.
- Tham số không bắt buộc. Là chuỗi sẽ được loại bỏ ở bên phải của p_string. Nếu tham số này không được sử dụng, hàm RTRIM sẽ loại bỏ các ký tự trắng ra khỏi bên phải của p_string.
Ví dụ:
-- --> TOM
Select RTRIM('TOM ') From dual;
-- --> 000789
Select RTRIM('00078900', '0') From Dual;
-- --> 0101ABC
Select RTRIM('0101ABC0101', '01') From dual;
-- --> ABC34
Select RTRIM('ABC34210', '0123') From dual;

Hàm TRIM sẽ loại bỏ các khoảng trắng bên trái (leading spaces) và khoảng trắng bên phải (trailing spaces) của một string ban đầu. Ký tự khoảng trắng là mặc định để loại bỏ, tuy nhiên bạn có thể chỉ định các ký tự để loại bỏ. Các ký tự được chỉ định là các chuỗi chữ ('A', 'm',..) hoặc CHR tương đương: 'CHR(112)', 'CHR(68)'.
Hàm TRIM trả về kiểu VARCHAR2.
Hàm TRIM trả về kiểu VARCHAR2.
Cú pháp:
TRIM( [ [ LEADING | TRAILING | BOTH ] p_trim_character FROM ] p_string )
Tham số:
LEADING
- Hàm sẽ loại bỏ p_trim_character ở phía bên trái của p_string.
- Hàm sẽ loại bỏ p_trim_character ở phía sau của p_string.
- Hàm sẽ loại bỏ p_trim_character ở phía trước và phía sau p_string.
- Các ký tự sẽ được loại bỏ khỏi p_string. Nếu tham số này không được sử dụng, hàm TRIM sẽ loại bỏ các khoảng trắng ra khỏi p_string.
- Là chuỗi sẽ được loại bỏ một số ký tự.
Ví dụ:
-- --> TOM
Select TRIM(' TOM ') From dual;
-- --> 78900
Select TRIM(Leading '0' from '00078900') From Dual;
-- --> 001ABC
Select TRIM(Trailing '0' from '001ABC00') From dual;
-- --> ABC21
Select TRIM(Both '0' from '00ABC21000' ) From dual;

Hàm SUBSTR (Hoặc SUBSTRING) cho phép bạn trích xuất một phần của một chuỗi (một chuỗi con) từ một chuỗi kí tự.
Cú pháp:
SUBSTR( p_string, p_start_position [, p_length ] )
Tham số:
p_string
- string nguồn.
- Vị trí bắt đầu trích ra chuỗi con. Mặc định là 1.
- Tham số không bắt buộc. Nó là số ký tự sẽ được trích ra. Nếu tham số này không được sử dụng nó, hàm SUBSTR sẽ trả về chuỗi con từ vị trí p_start_position tới cuối của chuỗi p_string.
- Nếu p_start_position là 0, hàm SUBSTR coi như p_start_position có giá trị đó là 1 (Vị trí đầu tiên trong chuỗi p_string).
- Nếu p_start_position là số âm, hàm SUBSTR sẽ bắt đầu từ cuối của p_string, đếm ngược lại p_start_position ký tự.
- Nếu p_length là số âm, hàm SUBSTR sẽ trả về giá trị NULL.

-- 'is is'
Select substr('this is a text message',3,5) Column1 from dual;
-- 'is is a text message'
Select substr('this is a text message',3) Column1 from dual;
-- 'messa'
Select substr('this is a text message',-7,5) Column1 from dual;
-- 'message'
Select substr('this is a text message',-7) Column1 from dual;
-- 'age'
Select substr('this is a text message',-3, 5) Column1 from dual;
-- null
Select substr('this is a text message',-3, -5) Column1 from dual;
Trả về một chuỗi con bằng cách đếm các byte, thay vì đếm các ký tự.
Cú pháp:
SUBSTRB( p_string, p_start_position [, p_length ] )
Tham số:
p_string
- Chuỗi nguồn.
- Vị trí bắt đầu để trích ra chuỗi con. Mặc định là 1.
- Tham số không bắt buộc. Nó là số byte sẽ được trích ra. Nếu tham số này không được sử dụng, hàm SUBSTRB sẽ trả về chuỗi con bắt đầu từ p_start_position tới cuối của chuỗi p_string.
Ví dụ:
-- ây là
Select Substrb('Đây là Tiếng Việt', 3, 7) from dual;
-- y là Ti
Select Substr('Đây là Tiếng Việt', 3, 7) from dual;
