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

Truy vấn MySQL hiển thị chuỗi con trước ký tự đặc biệt

Sử dụng hàm LOCATE() và SUBSTRING() trong MySQL để đạt được điều này.

Tạo bảng demo

mysql> create table DemoTable (
    -> Title text
    -> );
Query OK, 0 rows affected (0.54 sec)

Chèn dữ liệu mẫu

mysql> insert into DemoTable values('Introduction To Java');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Introduction - To MySQL');
Query OK, 1 row affected (0.16 sec)

Hiển thị tất cả bản ghi

mysql> select * from DemoTable;

Kết quả

+-------------------------+
| Title                   |
+-------------------------+
| Introduction To Java    |
| Introduction - To MySQL |
+-------------------------+
2 rows in set (0.00 sec)

Truy vấn lấy chuỗi con trước ký tự đặc biệt ' - '

mysql> select distinct
    -> if(LOCATE(' - ', Title) > 0, 
    ->     SUBSTRING(Title, 1, LOCATE(' - ', Title)), 
    ->     Title) 
    -> from DemoTable;

Kết quả

+-----------------------------------------------------------------------------+
| if(LOCATE(' - ',Title)>0, SUBSTRING(Title, 1, LOCATE(' - ', Title)), Title) |
+-----------------------------------------------------------------------------+
| Introduction To Java                                                          |
| Introduction                                                                  |
+-----------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Giải thích:

  • LOCATE(' - ', Title): Tìm vị trí của chuỗi ' - ' trong Title. Trả về 0 nếu không tìm thấy.
  • SUBSTRING(Title, 1, LOCATE(' - ', Title)): Lấy chuỗi con từ vị trí 1 đến vị trí tìm thấy.
  • IF(condition, true_value, false_value): Nếu tìm thấy ' - ' thì lấy phần trước, ngược lại lấy nguyên chuỗi.

Lưu ý: Hàm SUBSTRING_INDEX() cũng có thể dùng cho trường hợp đơn giản hơn: SUBSTRING_INDEX(Title, ' - ', 1).