Thứ Tư, 26 tháng 10, 2022

PL/SQL - Chuỗi (string)

Chuỗi trong PL/SQL thực sự là một chuỗi ký tự với đặc điểm kỹ thuật kích thước tùy chọn. Các ký tự có thể là số, chữ cái, trống, ký tự đặc biệt hoặc kết hợp của tất cả. PL/SQL cung cấp ba loại chuỗi:

  • Chuỗi có độ dài cố định - Trong các chuỗi như vậy, người lập trình chỉ định độ dài trong khi khai báo chuỗi. Chuỗi được đệm bên phải với các khoảng trắng có độ dài được chỉ định.

  • Chuỗi có độ dài thay đổi - Trong các chuỗi như vậy, độ dài tối đa lên đến 32,767, cho chuỗi được chỉ định và không có phần đệm diễn ra.

  • Đối tượng lớn ký tự (CLOB) - Đây là các chuỗi có độ dài thay đổi có thể lên đến 128 terabyte.

Chuỗi PL/SQL có thể là biến hoặc ký tự. Một chuỗi ký tự được đặt trong dấu ngoặc kép. Ví dụ,

'This is a string literal.' Or 'hello world'


Để bao gồm một dấu ngoặc kép bên trong một chuỗi ký tự, bạn cần nhập hai dấu ngoặc kép bên cạnh nhau. Ví dụ,

'this isn''t what it looks like'


Khai báo các biến chuỗi

Cơ sở dữ liệu Oracle cung cấp nhiều kiểu dữ liệu chuỗi, chẳng hạn như CHAR, NCHAR, VARCHAR2, NVARCHAR2, CLOB và NCLOB. Các kiểu dữ liệu có tiền tố là 'N' là kiểu dữ liệu 'bộ ký tự quốc gia' , lưu trữ dữ liệu ký tự Unicode.

Nếu bạn cần khai báo một chuỗi có độ dài thay đổi, bạn phải cung cấp độ dài tối đa của chuỗi đó. Ví dụ: kiểu dữ liệu VARCHAR2. Ví dụ sau minh họa việc khai báo và sử dụng một số biến chuỗi:

DECLARE 

   name varchar2(20); 

   company varchar2(30); 

   introduction clob; 

   choice char(1); 

BEGIN 

   name := 'John Smith'; 

   company := 'tranvanbinh.vn'; 

   introduction := ' Hello! I''m John Smith from tranvanbinh.vn.'; 

   choice := 'y'; 

   IF choice = 'y' THEN 

      dbms_output.put_line(name); 

      dbms_output.put_line(company); 

      dbms_output.put_line(introduction); 

   END IF; 

END; 

/

Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:

John Smith 

tranvanbinh.vn

Hello! I'm John Smith from tranvanbinh.vn.  


PL/SQL procedure successfully completed


Để khai báo một chuỗi có độ dài cố định, hãy sử dụng kiểu dữ liệu CHAR. Ở đây bạn không phải chỉ định độ dài tối đa cho một biến độ dài cố định. Nếu bạn không giới hạn độ dài, Cơ sở dữ liệu Oracle sẽ tự động sử dụng độ dài tối đa được yêu cầu. Hai khai báo sau đây giống hệt nhau:

red_flag CHAR(1) := 'Y'; 

 red_flag CHAR   := 'Y';


Các hàm và toán tử chuỗi PL/SQL

PL/SQL cung cấp toán tử nối (||) để nối hai chuỗi. Bảng sau cung cấp các hàm chuỗi được cung cấp bởi PL/SQL:

S.Không

Chức năng & Mục đích

1

ASCII (x);

Trả về giá trị ASCII của ký tự x.

2

CHR (x);

Trả về ký tự có giá trị ASCII của x.

3

CONCAT (x, y);

Nối các chuỗi x và y và trả về chuỗi được nối thêm.

4

INITCAP (x);

Chuyển đổi chữ cái đầu tiên của mỗi từ trong x thành chữ hoa và trả về chuỗi đó.

5

INSTR (x, chuỗi tìm kiếm [, bắt đầu] [, lần xuất hiện]);

Tìm kiếm chuỗi find_string trong x và trả về vị trí mà nó xuất hiện.

6

INSTRB (x);

Trả về vị trí của một chuỗi trong một chuỗi khác, nhưng trả về giá trị theo byte.

7

LENGTH (x);

Trả về số ký tự trong x.

8

LENGTHB (x);

Trả về độ dài của một chuỗi ký tự tính bằng byte cho bộ ký tự byte đơn.

9

LOWER (x);

Chuyển đổi các ký tự trong x thành chữ thường và trả về chuỗi đó.

10

LPAD (x, width [, pad_string]);

Chèn x với khoảng trắng ở bên trái, để nâng tổng chiều dài của chuỗi lên đến ký tự chiều rộng.

11

LTRIM (x [, trim_string]);

Cắt các ký tự từ bên trái của x .

12

NANVL (x, giá trị);

Trả về giá trị nếu x khớp với giá trị đặc biệt NaN (không phải số), nếu không trả về x .

13

NLS_INITCAP (x);

Giống như hàm INITCAP ngoại trừ việc nó có thể sử dụng một phương pháp sắp xếp khác như được chỉ định bởi NLSSORT.

14

NLS_LOWER (x);

Tương tự như hàm LOWER ngoại trừ nó có thể sử dụng một phương pháp sắp xếp khác như được chỉ định bởi NLSSORT.

15

NLS_UPPER (x);

Tương tự như hàm UPPER ngoại trừ nó có thể sử dụng một phương pháp sắp xếp khác như được chỉ định bởi NLSSORT.

16

NLSSORT (x);

Thay đổi phương pháp sắp xếp các ký tự. Phải được chỉ định trước bất kỳ chức năng NLS nào; nếu không, sắp xếp mặc định sẽ được sử dụng.

17

NVL (x, giá trị);

Trả về giá trị nếu x là null; ngược lại, x được trả về.

18

NVL2 (x, value1, value2);

Trả về giá trị1 nếu x không rỗng; nếu x là null, giá trị2 được trả về.

19

REPLACE (x, chuỗi tìm kiếm, chuỗi thay thế);

Tìm kiếm x cho chuỗi tìm kiếm và thay thế nó bằng chuỗi_cửa_đúng.

20

RPAD (x, width [, pad_string]);

Miếng đệm x ở bên phải.

21

RTRIM (x [, trim_string]);

Cắt x từ bên phải.

22

SOUNDEX (x);

Trả về một chuỗi chứa biểu diễn ngữ âm của x .

23

SUBSTR (x, start [, length]);

Trả về một chuỗi con của x bắt đầu tại vị trí được chỉ định bởi start. Có thể cung cấp độ dài tùy chọn cho chuỗi con.

24

SUBSTRB (x);

Tương tự như SUBSTR ngoại trừ các tham số được biểu thị bằng byte thay vì ký tự cho hệ thống ký tự byte đơn.

25

TRIM ([trim_char FROM) x);

Cắt các ký tự từ bên trái và bên phải của x .

26

UPPER(x);

Chuyển các chữ cái trong x thành chữ hoa và trả về chuỗi đó.

Bây giờ chúng ta hãy làm một vài ví dụ để hiểu khái niệm -

ví dụ 1

DECLARE 

   greetings varchar2(11) := 'hello world'; 

BEGIN 

   dbms_output.put_line(UPPER(greetings)); 

    

   dbms_output.put_line(LOWER(greetings)); 

    

   dbms_output.put_line(INITCAP(greetings)); 

    

   /* retrieve the first character in the string */ 

   dbms_output.put_line ( SUBSTR (greetings, 1, 1)); 

    

   /* retrieve the last character in the string */ 

   dbms_output.put_line ( SUBSTR (greetings, -1, 1)); 

    

   /* retrieve five characters,  

      starting from the seventh position. */ 

   dbms_output.put_line ( SUBSTR (greetings, 7, 5)); 

    

   /* retrieve the remainder of the string, 

      starting from the second position. */ 

   dbms_output.put_line ( SUBSTR (greetings, 2)); 

     

   /* find the location of the first "e" */ 

   dbms_output.put_line ( INSTR (greetings, 'e')); 

END; 

/

Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:

HELLO WORLD 

hello world 

Hello World 

World 

ello World 

2  


PL/SQL procedure successfully completed.


Ví dụ 2

DECLARE 

   greetings varchar2(30) := '......Hello World.....'; 

BEGIN 

   dbms_output.put_line(RTRIM(greetings,'.')); 

   dbms_output.put_line(LTRIM(greetings, '.')); 

   dbms_output.put_line(TRIM( '.' from greetings)); 

END; 

/

Khi đoạn mã trên được thực thi tại dấu nhắc SQL, nó tạo ra kết quả sau:

......Hello World  

Hello World..... 

Hello World  


PL/SQL procedure successfully completed.


=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile: 0902912888
⚡️ Skype: tranbinh48ca
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: http://bit.ly/ytb_binhoraclemaster
👨 Tiktok: https://www.tiktok.com/@binhoraclemaster?lang=vi
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhoracle
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
PL/SQL, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,khóa học pl/sql, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, middleware, hoc solaris, hoc linux, hoc aix, unix, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master