MySQL String Functions
This post hasn't been updated for 3 years
Sau đây mình sẽ giới thiệu một số hàm hay sử dụng cũng như cú pháp và cách sử dụng của hàm đó.
1. Hàm CHAR_LENGTH(str)
Trả về (số ký tự) của chuỗi str. Một ký tự được biểu diễn bởi nhiều byte được đếm như là một ký tự đơn.
mysql> select title,CHAR_LENGTH(title) from products;
+-----------+--------------------+
| title | CHAR_LENGTH(title) |
+-----------+--------------------+
| HuyTuan | 7 |
| € | 1 |
+-----------+--------------------+
2 rows in set (0.00 sec)
2. Hàm LENGTH(str)
Trả về độ dài (số byte) của chuỗi str. Một ký tự được biểu diễn bằng bao nhiêu byte thì đếm bấy nhiêu byte.
mysql> select title, LENGTH(title) from products;
+-----------+---------------+
| title | LENGTH(title) |
+-----------+---------------+
| HuyTuan | 7 |
| € | 3 |
+-----------+---------------+
2 rows in set (0.00 sec)
3. Hàm CONCAT(str1,str2,...)
Trả về chuỗi là kết quả của việc nối chuỗi các tham số.
mysql> select CONCAT(title, ' : ', content) from products;
+-------------------------------+
| CONCAT(title, ' : ', content) |
+-------------------------------+
| HuyTuan : FramgiaVN |
| € : 2 bytes |
+-------------------------------+
2 rows in set (0.01 sec)
4. Hàm CONCAT_WS(separator,str1,str2,...)
là một dạng hàm CONCAT() đặc biệt. Tham số đầu tiên là Separator cho các tham số còn lại. Separator này được thêm vào giữa các chuỗi để được nối chuỗi.
mysql> select CONCAT_WS('#',id,title,content) from products;
+---------------------------------+
| CONCAT_WS('#',id,title,content) |
+---------------------------------+
| 6#HuyTuan#FramgiaVN |
| 7#€#2 bytes |
+---------------------------------+
2 rows in set (0.00 sec)
5. Hàm ELT(N,str1,str2,str3,...)
Returns str1 if N = 1, str2 if N = 2 ...
mysql> SELECT ELT(2, 'ej', 'Heja', 'hej', 'foo');
+------------------------------------+
| ELT(2, 'ej', 'Heja', 'hej', 'foo') |
+------------------------------------+
| Heja |
+------------------------------------+
1 row in set (0.00 sec)
6. Hàm FIELD(str,str1,str2,str3,...)
Trả về chỉ mục (vị trí bắt đầu từ 1) của str trong danh sách str1, str2, str3, … Trả về 0 nếu str không được tìm thấy.
mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
+---------------------------------------------------------+
| FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
7. Hàm FIND_IN_SET(str,strlist)
Trả về một giá trị trong dãy từ 1 tới N, nếu chuỗi str có trong danh sách chuỗi strlist chứa N chuỗi con.
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
+---------------------------------------------------------+
| SELECT FIND_IN_SET('b','a,b,c,d') |
+---------------------------------------------------------+
| 2 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
8. Hàm FORMAT(X,D)
Định dạng của số X như '#,###,###.##', được làm tròn về D vị trí sau dấu phảy, và trả về kết quả dưới dạng một chuỗi. Nếu D là 0, thì kết quả không có dấu thập phân hay phần thập phân.
mysql> SELECT FORMAT(12332.123456, 4);
+---------------------------------------------------------+
| FORMAT(12332.123456, 4) |
+---------------------------------------------------------+
| 12,332.1235 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
9. INSERT(str,pos,len,newstr)
Trả về chuỗi str, với chuỗi con bắt đầu tại vị trí pos tới len được thay thế với chuỗi newstr. Trả về NULL nếu bất kỳ tham số nào là NULL.
mysql> SELECT INSERT('Quadratic', 3, 4, 'What');
+---------------------------------------------------------+
| INSERT('Quadratic', 3, 4, 'What') |
+---------------------------------------------------------+
| QuWhattic |
+---------------------------------------------------------+
1 row in set (0.00 sec)
10. INSTR(str,substr)
Trả về vị trí của lần xuất hiện đầu tiên của chuỗi con substr trong chuỗi str.
mysql> SELECT INSTR('foobarbar', 'bar');
+---------------------------------------------------------+
| INSTR('foobarbar', 'bar') |
+---------------------------------------------------------+
| 4 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
11. Hàm LEFT(str,len)
Trả về các ký tự có độ dài len bắt đầu từ bên trái nhất của chuỗi str, hoặc trả về NULL nếu bất kỳ tham số nào là NULL.
mysql> SELECT LEFT('foobarbar', 5);
+---------------------------------------------------------+
| LEFT('foobarbar', 5) |
+---------------------------------------------------------+
| fooba |
+---------------------------------------------------------+
1 row in set (0.00 sec)
12. LOAD_FILE(file_name)
- Hàm Đọc file và trả về các nội dung file dưới dạng chuỗi.
- Để sử dụng hàm này, file phải được đặt trên Server Host, bạn phải xác định pathname đầy đủ tới file đó, và bạn phải có quyền đọc ghi FILE.
- Kích cỡ của file nó nhỏ hơn max_allowed_packet byte.
- Nếu file không tồn tại hàm sẽ trả về NULL.
mysql> UPDATE table_test
-> SET blob_col=LOAD_FILE('/tmp/test.csv')
-> WHERE id=1;
13. Hàm LOWER(str)
Trả về chuỗi str với tất cả ký tự đã được chuyển đổi thành chữ thường.
mysql> SELECT LOWER('QUADRATICALLY');
+---------------------------------------------------------+
| LOWER('QUADRATICALLY') |
+---------------------------------------------------------+
| quadratically |
+---------------------------------------------------------+
1 row in set (0.00 sec)
14. Hàm LPAD(str,len,padstr)
Trả về chuỗi str, đã được phụ thêm vào bên trái bởi chuỗi padstr với len ký tự. Nếu str là dài hơn len, thì giá trị trả về bị rút gọn về len ký tự
mysql> SELECT LPAD('abc',4,'FA');
+--------------------+
| LPAD('abc',4,'FA') |
+--------------------+
| Fabc |
+--------------------+
1 row in set (0.00 sec)
15. Hàm LTRIM(str)
Trả về chuỗi str sau khi xóa bỏ các Leading space.
mysql> SELECT LTRIM(' barbar');
+---------------------------------------------------------+
| LTRIM(' barbar') |
+---------------------------------------------------------+
| barbar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
16. Hàm expr REGEXP pattern
- Trả về 1 nếu expr so khớp với pattern, nếu không thì trả về 0.
- Nếu expr hoặc pattern là NULL, thì kết quả là NULL.
- REGEXP là không phân biệt kiểu chữ, ngoại trừ khi được sử dụng với các chuỗi nhị phân.
Vd1:
mysql> SELECT 'ABCDEF' REGEXP 'A%C%%';
+---------------------------------------------------------+
| 'ABCDEF' REGEXP 'A%C%%' |
+---------------------------------------------------------+
| 0 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Vd2:
mysql> SELECT 'ABCDE' REGEXP '.*';
+---------------------------------------------------------+
| 'ABCDE' REGEXP '.*' |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Vd3:
mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';
+---------------------------------------------------------+
| 'new*\n*line' REGEXP 'new\\*.\\*line' |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+
1 row in set (0.00 sec)
17. Hàm REPEAT(str,count)
Trả về một chuỗi chứa chuỗi str được lặp lại count lần. Nếu count là nhỏ hơn 1, trả về chuỗi trống. Trả về NULL nếu str hoặc count là NULL.
mysql> SELECT REPEAT('MySQL', 3);
+---------------------------------------------------------+
| REPEAT('MySQL', 3) |
+---------------------------------------------------------+
| MySQLMySQLMySQL |
+---------------------------------------------------------+
1 row in set (0.00 sec)
18. Hàm REPLACE(str,from_str,to_str)
Trả về chuỗi str với tất cả lần xuất hiện của chuỗi từ from_str được thay thế bởi chuỗi to_str. Hàm REPLACE() thực hiện một so khớp phân biệt kiểu chữ khi tìm kiếm cho from_str.
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
+---------------------------------------------------------+
| REPLACE('www.mysql.com', 'w', 'Ww') |
+---------------------------------------------------------+
| WwWwWw.mysql.com |
+---------------------------------------------------------+
1 row in set (0.00 sec)
19. Hàm RIGHT(str,len)
Trả về len ký tự ở bên phải nhất từ chuỗi str, hoặc NULL nếu bất kỳ tham số nào là NULL.
mysql> SELECT RIGHT('foobarbar', 4);
+---------------------------------------------------------+
| RIGHT('foobarbar', 4) |
+---------------------------------------------------------+
| rbar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
20. Hàm RTRIM(str)
Trả về chuỗi str sau khi đã loại bỏ các Trailing space.
mysql> SELECT RTRIM('barbar ');
+---------------------------------------------------------+
| RTRIM('barbar ') |
+---------------------------------------------------------+
| barbar |
+---------------------------------------------------------+
1 row in set (0.00 sec)
21. Hàm UPPER(str)
mysql> SELECT UPPER('Allah-hus-samad');
+---------------------------------------------------------+
| UPPER('Allah-hus-samad') |
+---------------------------------------------------------+
| ALLAH-HUS-SAMAD |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Hy vọng với bài này sẽ giúp ích các bạn nhiều trong quá trình làm việc với MYSQL.
Nguồn tham khảo: String Functions
All Rights Reserved