openplanning

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

Nhóm phát triển của chúng tôi vừa ra mắt website langlearning.net học tiếng Anh, Nga, Đức, Pháp, Việt, Trung, Hàn, Nhật, ... miễn phí cho tất cả mọi người.
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ãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

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.
  1. 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).
  2. 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ự.
  3. 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;