openplanning

Các hàm xử lý chuỗi trong Oracle

  1. ASCII
  2. COALESCE
  3. UPPER
  4. LOWER
  5. INITCAP
  6. CHR
  7. CONCAT(Varchar2, Varchar2)
  8. CONCAT(Clob, Clob)
  9. INSTR
  10. INSTRB
  11. LENGTH
  12. LENGTHB
  13. LPAD
  14. LTRIM
  15. RTRIM
  16. TRIM
  17. SUBSTR
  18. SUBSTRB

1. ASCII

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

2. COALESCE

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;

3. UPPER

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;

4. LOWER

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;

5. INITCAP

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;

6. CHR

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;

7. CONCAT(Varchar2, Varchar2)

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.
p_string2
  • string thứ 2 dùng để nối.
Ví dụ:
-- --> Tom Cat
Select Concat('Tom ', 'Cat') From dual;

8. CONCAT(Clob, Clob)

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
p_string2
  • 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;

9. INSTR

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.
p_substring
  • Chuỗi con sẽ tìm trong p_string. p_substring có thể là CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, hoặc NCLOB.
p_start_position
  • 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.
p_occurrence
  • 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:

10. INSTRB

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.
p_substring
  • Chuỗi sẽ tìm
p_start_position
  • 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.
p_occurrence
  • 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:

11. LENGTH

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_stringNULL hoặc rỗng, hàm LENGTH sẽ trả về NULL.
Ví dụ:
-- --> 7
Select Length('Tom Cat') As Column1 From Dual;

12. LENGTHB

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;

13. LPAD

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ó.
p_padded_length
  • Độ 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.
p_pad_string
  • 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;

14. LTRIM

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.
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ó.
p_trim_string
  • 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;

15. RTRIM

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.
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ó.
p_trim_string
  • 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;

16. TRIM

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.
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.
TRAILING
  • Hàm sẽ loại bỏ p_trim_character ở phía sau của p_string.
BOTH
  • Hàm sẽ loại bỏ p_trim_character ở phía trước và phía sau p_string.
p_trim_character
  • 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.
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;

17. SUBSTR

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.
p_start_position
  • Vị trí bắt đầu trích ra chuỗi con. Mặc định là 1.
p_length
  • 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;

18. SUBSTRB

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.
p_start_position
  • Vị trí bắt đầu để trích ra chuỗi con. Mặc định là 1.
p_length
  • 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;