Trong bài viết này, chúng ta sẽ khám phá các hàm chuỗi phổ biến và nâng cao trong MySQL, cung cấp hướng dẫn chi tiết và ví dụ minh họa rõ ràng để bạn có thể dễ dàng áp dụng chúng vào các tình huống thực tế. Bạn sẽ học cách sử dụng các hàm như CONCAT(), SUBSTRING(), REPLACE(), và nhiều hàm khác để xử lý dữ liệu chuỗi một cách hiệu quả. Dù bạn là người mới bắt đầu hay đã có kinh nghiệm trong việc làm việc với MySQL, bài viết này sẽ cung cấp cho bạn những kiến thức cần thiết để làm việc với dữ liệu chuỗi một cách thông thạo.

MySQL cung cấp nhiều hàm chuỗi hữu ích để xử lý, thao tác và phân tích dữ liệu chuỗi. Dưới đây là hướng dẫn chi tiết về các hàm chuỗi trong MySQL, bao gồm cả các ví dụ minh họa cụ thể.

1. Hàm CHAR_LENGTH()LENGTH()

  • CHAR_LENGTH() trả về số lượng ký tự của một chuỗi.
  • LENGTH() trả về số byte của chuỗi.

Cú pháp:

CHAR_LENGTH(string)
-- Hoặc
LENGTH(string)

Ví dụ:

SELECT CHAR_LENGTH('Hello World') AS char_length;
-- Kết quả: 11

SELECT LENGTH('Hello World') AS byte_length;
-- Kết quả: 11 (trong trường hợp chuỗi sử dụng các ký tự ASCII)

Giải thích:

  • CHAR_LENGTH('Hello World') trả về số ký tự trong chuỗi, là 11.
  • LENGTH('Hello World') trả về số byte của chuỗi, thường cũng là 11 trong trường hợp ký tự ASCII.

2. Hàm CONCAT()CONCAT_WS()

  • CONCAT() nối nhiều chuỗi lại với nhau.
  • CONCAT_WS() nối nhiều chuỗi và chèn một separator giữa các chuỗi.

Cú pháp:

CONCAT(string1, string2, ...)
-- Hoặc
CONCAT_WS(separator, string1, string2, ...)

Ví dụ:

SELECT CONCAT('Hello', ' ', 'World') AS concatenated_string;
-- Kết quả: 'Hello World'

SELECT CONCAT_WS(', ', 'Alice', 'Bob', 'Charlie') AS names;
-- Kết quả: 'Alice, Bob, Charlie'

Giải thích:

  • CONCAT('Hello', ' ', 'World') nối các chuỗi Hello, một khoảng trắng, và World, trả về Hello World.
  • CONCAT_WS(', ', 'Alice', 'Bob', 'Charlie') nối các chuỗi với dấu phẩy và khoảng trắng làm separator, trả về Alice, Bob, Charlie.

3. Hàm SUBSTRING()SUBSTR()

  • SUBSTRING() hoặc SUBSTR() trích xuất một phần của chuỗi từ chỉ số bắt đầu và độ dài.

Cú pháp:

SUBSTRING(string, start, length)
-- Hoặc
SUBSTR(string, start, length)

Ví dụ:

SELECT SUBSTRING('Hello World', 7, 5) AS extracted_string;
-- Kết quả: 'World'

SELECT SUBSTR('Hello World', 1, 5) AS extracted_string;
-- Kết quả: 'Hello'

Giải thích:

  • SUBSTRING('Hello World', 7, 5) bắt đầu từ ký tự thứ 7 và trích xuất 5 ký tự, trả về World.
  • SUBSTR('Hello World', 1, 5) bắt đầu từ ký tự đầu tiên và trích xuất 5 ký tự, trả về Hello.

4. Hàm TRIM(), LTRIM(), và RTRIM()

  • TRIM() loại bỏ các ký tự trắng từ cả hai đầu của chuỗi.
  • LTRIM() loại bỏ các ký tự trắng từ đầu chuỗi.
  • RTRIM() loại bỏ các ký tự trắng từ cuối chuỗi.

Cú pháp:

TRIM([remstr FROM] string)
-- Hoặc
LTRIM(string)
-- Hoặc
RTRIM(string)

Ví dụ:

SELECT TRIM('   Hello World   ') AS trimmed_string;
-- Kết quả: 'Hello World'

SELECT LTRIM('   Hello World') AS left_trimmed_string;
-- Kết quả: 'Hello World'

SELECT RTRIM('Hello World   ') AS right_trimmed_string;
-- Kết quả: 'Hello World'

Giải thích:

  • TRIM(' Hello World ') loại bỏ các khoảng trắng từ cả hai đầu, trả về Hello World.
  • LTRIM(' Hello World') loại bỏ các khoảng trắng từ đầu chuỗi, trả về Hello World.
  • RTRIM('Hello World ') loại bỏ các khoảng trắng từ cuối chuỗi, trả về Hello World.

5. Hàm REPLACE()

  • REPLACE() thay thế tất cả các sự xuất hiện của một chuỗi con bằng chuỗi khác.

Cú pháp:

REPLACE(string, old_substring, new_substring)

Ví dụ:

SELECT REPLACE('Hello World', 'World', 'MySQL') AS replaced_string;
-- Kết quả: 'Hello MySQL'

Giải thích:

  • REPLACE('Hello World', 'World', 'MySQL') thay thế World bằng MySQL, trả về Hello MySQL.

6. Hàm INSTR()

  • INSTR() trả về vị trí đầu tiên của một chuỗi con trong chuỗi.

Cú pháp:

INSTR(string, substring)

Ví dụ:

SELECT INSTR('Hello World', 'World') AS position;
-- Kết quả: 7

Giải thích:

  • INSTR('Hello World', 'World') trả về vị trí đầu tiên của World trong Hello World, bắt đầu từ ký tự số 7.

7. Hàm LOCATE()

  • LOCATE() cũng tìm vị trí của chuỗi con trong chuỗi, tương tự như INSTR(), nhưng cho phép chỉ định vị trí bắt đầu.

Cú pháp:

LOCATE(substring, string, [start])

Ví dụ:

SELECT LOCATE('World', 'Hello World') AS position;
-- Kết quả: 7

SELECT LOCATE('World', 'Hello World Hello World', 8) AS position;
-- Kết quả: 13

Giải thích:

  • LOCATE('World', 'Hello World') trả về vị trí của World trong Hello World, là 7.
  • LOCATE('World', 'Hello World Hello World', 8) tìm kiếm World bắt đầu từ vị trí 8, trả về 13.

8. Hàm UPPER()LOWER()

  • UPPER() chuyển đổi tất cả các ký tự trong chuỗi thành chữ hoa.
  • LOWER() chuyển đổi tất cả các ký tự trong chuỗi thành chữ thường.

Cú pháp:

UPPER(string)
-- Hoặc
LOWER(string)

Ví dụ:

SELECT UPPER('Hello World') AS upper_case;
-- Kết quả: 'HELLO WORLD'

SELECT LOWER('Hello World') AS lower_case;
-- Kết quả: 'hello world'

Giải thích:

  • UPPER('Hello World') chuyển đổi toàn bộ chuỗi thành chữ hoa, trả về HELLO WORLD.
  • LOWER('Hello World') chuyển đổi toàn bộ chuỗi thành chữ thường, trả về hello world.

9. Hàm FORMAT()

  • FORMAT() định dạng một số theo cách mà bạn có thể chỉ định số lượng chữ số thập phân và ký tự phân cách.

Cú pháp:

FORMAT(number, decimals)

Ví dụ:

SELECT FORMAT(1234567.89, 2) AS formatted_number;
-- Kết quả: '1,234,567.89'

Giải thích:

  • FORMAT(1234567.89, 2) định dạng số 1234567.89 với 2 chữ số thập phân, sử dụng dấu phẩy làm ký tự phân cách hàng nghìn.

10. Hàm LEFT()RIGHT()

  • LEFT() trả về số ký tự từ bên trái của chuỗi.
  • RIGHT() trả về số ký tự từ bên phải của chuỗi.

Cú pháp:

LEFT(string, length)
-- Hoặc
RIGHT(string, length)

Ví dụ:

SELECT LEFT('Hello World', 5) AS left_part;
-- Kết quả: 'Hello'

SELECT RIGHT('Hello World', 5) AS right_part;
-- Kết quả: 'World'

Giải thích:

  • LEFT('Hello World', 5) trả về Hello, là 5 ký tự từ bên trái của chuỗi.
  • RIGHT('Hello World', 5) trả về World, là 5 ký tự từ bên phải của chuỗi.

Các hàm chuỗi trong MySQL giúp bạn xử lý và phân tích dữ liệu chuỗi hiệu quả hơn, tạo điều kiện cho các truy vấn và báo cáo chính xác hơn.