Bạn cần sử dụng LOCATE () cùng với SUBSTR (). Cú pháp dưới đây sẽ tìm từ sau dấu phân cách. Ở đây, dấu phân tách là dấu hai chấm (:), bạn có thể sử dụng một dấu chấm khác, tức là tùy bạn. Cú pháp như sau -
SELECT SUBSTR(yourColumnName, LOCATE(':',yourColumnName)+1, (CHAR_LENGTH(yourColumnName) - LOCATE(':',REVERSE(yourColumnName)) - LOCATE(':',yourColumnName))) AS anyAliasName FROM yourTableName;
Để hiểu cú pháp trên, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -
mysql> create table SearchTextBetweenDelimitersDemo -> ( -> Id int NOT NULL AUTO_INCREMENT, -> Words longtext, -> PRIMARY KEY(Id) -> ); Query OK, 0 rows affected (0.67 sec)
Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert. Truy vấn như sau -
mysql> insert into SearchTextBetweenDelimitersDemo(Words) values('Object:Oriented:Programming'); Query OK, 1 row affected (0.21 sec) mysql> insert into SearchTextBetweenDelimitersDemo(Words) values('C++:Java:C#'); Query OK, 1 row affected (0.21 sec) mysql> insert into SearchTextBetweenDelimitersDemo(Words) values('SQLServer:MySQL:Oracle'); Query OK, 1 row affected (0.17 sec) mysql> insert into SearchTextBetweenDelimitersDemo(Words) values('SQL SQLServer:MySQL:Oracle'); Query OK, 1 row affected (0.18 sec)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -
mysql> select *from SearchTextBetweenDelimitersDemo;
Sau đây là kết quả -
+----+-----------------------------+ | Id | Words | +----+-----------------------------+ | 1 | Object:Oriented:Programming | | 2 | C++:Java:C# | | 3 | SQLServer:MySQL:Oracle | | 4 | SQL SQLServer:MySQL:Oracle | +----+-----------------------------+ 4 rows in set (0.00 sec)
Đây là truy vấn để tìm kiếm và hiển thị các từ giữa các dấu phân cách -
mysql> SELECT -> SUBSTR(Words, -> LOCATE(':',Words)+1, -> (CHAR_LENGTH(Words) - LOCATE(':',REVERSE(Words)) - LOCATE(':',Words))) AS Text -> FROM SearchTextBetweenDelimitersDemo;
Sau đây là kết quả -
+----------+ | Text | +----------+ | Oriented | | Java | | MySQL | | MySQL | +----------+ 4 rows in set (0.00 sec)