Sua Loi Blogger Blade1407

Cách tìm kiếm có dấu trên Mysql - Search utf8 on Mysql. SELECT * FROM hashtags WHERE hashtag LIKE CONCAT('%', CONVERT('mẹ', BINARY), '%')

Cach tim kiem co dau tren Mysql - Search utf8 on Mysql

[vấn đề]

Đã từng ai điên tiết hoặc xin chịu thua trước việc tìm kiếm một từ tiếng việt chính xác trên cả 1 đoạn văn bản của mysql chưa ?

Như ví dụ từ ảnh trên, tôi lấy ra các hashtag có liên quan đến các từ mỹ, phẩm, mẹ. Tuy nhiên trong CSDL của tôi lại có các hashtag khác là me, my, pham, các từ này hoàn toán khác nghĩa với điều tôi cần tìm.

[Giải pháp]

Chuyển đoạn text cần tìm/ so sánh của bạn thành binary(hệ nhị phân).
việc chuyển đoạn text thành hệ nhị phân giúp mysql sẽ hiểu từ có dấu và không có dấu là 2 từ hoàn toàn khác nhau và sẽ loại bỏ từ không đúng đi.

Cụ thể từ my và từ mỹ khi chuyển đổi sang binary sẽ là :

my => 01101101 01111001
mỹ => 01101101 1111011111001

câu lệnh chuyển đổi string sang binary là CONVERT('string', BINARY)

Nếu bạn cần đang sử dụng câu điều liệu % cho đoạn string mà bạn tìm kiếm thì nhớ thêm hàm CONCAT để nối string với ký tự % nhé.

đây là câu lệnh trước khi chuyển đổi sang binary
SELECT * FROM hashtags WHERE hashtag LIKE '%mẹ%' OR hashtag LIKE '%mỹ%' OR hashtag LIKE '%phẩm%'

Sau khi chuyển đổi

SELECT * FROM hashtags WHERE hashtag LIKE CONCAT('%', CONVERT('mẹ', BINARY), '%') OR hashtag LIKE CONCAT('%', CONVERT('mỹ', BINARY), '%') OR hashtag LIKE CONCAT('%', CONVERT('phẩm', BINARY), '%')


Chia sẻ:

Viết 1 bình luận:

0 comments so far,add yours