Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Lấy tất cả ký tự trước khoảng trắng đầu tiên trong MySQL


Sử dụng kết hợp LEFT() và LOCATE() để cắt chuỗi từ đầu đến trước khoảng trắng đầu tiên.

Cú pháp

SELECT LEFT(column_name, LOCATE(' ', column_name) - 1) AS first_part
FROM table_name;

Giải thích:

  • LOCATE(' ', column_name) trả về vị trí khoảng trắng đầu tiên (bắt đầu từ 1).
  • Trừ 1 để lấy vị trí ký tự cuối cùng trước khoảng trắng.
  • LEFT(str, len) lấy len ký tự từ bên trái.

Ví dụ minh họa

mysql> CREATE TABLE AllCharacterBeforeSpace (
  FirstNameAndLastName VARCHAR(200)
);
Query OK, 0 rows affected (0.51 sec)

mysql> INSERT INTO AllCharacterBeforeSpace VALUES
('John Smith'), ('Carol Taylor'), ('Maria Garcia'), ('James Johnson');
Query OK, 4 rows affected

Truy vấn:

mysql> SELECT LEFT(FirstNameAndLastName, LOCATE(' ', FirstNameAndLastName) - 1) 
       AS FirstNameBeforeSpace
FROM AllCharacterBeforeSpace;

Kết quả:

+----------------------+
| FirstNameBeforeSpace |
+----------------------+
| John                 |
| Carol                |
| Maria                |
| James                |
+----------------------+

Xử lý trường hợp không có khoảng trắng

Nếu chuỗi không chứa khoảng trắng, LOCATE trả về 0, LEFT(str, -1) trả về chuỗi rỗng.

-- Cải tiến: dùng CASE WHEN
SELECT CASE 
  WHEN LOCATE(' ', col) > 0 THEN LEFT(col, LOCATE(' ', col) - 1)
  ELSE col
END AS first_part FROM table_name;

Cách thay thế: SUBSTRING_INDEX()

SELECT SUBSTRING_INDEX(column_name, ' ', 1) AS first_part
FROM table_name;

SUBSTRING_INDEX(str, delim, 1) lấy phần trước dấu phân cách đầu tiên. Xử lý NULL an toàn hơn.