10/10/2018, 11:06

Truy vấn thế nào để ra kết quả đây?

Tôi dùng Mysql + PHP. Có 1 table (id, keyword):
id / keyword
1 Việt nam
2 Độc lập
3 cộng hòa
4 chủ nghĩa
5 xã hội
6 hạnh phúc
.. .....
Bây giờ tôi muốn khi người dùng nhập vào chuỗi kí tự mà trong đó có chứa các keyword như trong bảng trên thì keyword đó được lấy ra để hiển thị.
Vd người dùng nhập: " Cộng hòa xã hội chủ nghĩa Việt nam" thì các keyword được lấy ra là : Việt nam, cộng hòa, chủ nghĩa, xã hội/
Trong mysql có hàm nào giải quyết gọn vấn đề này không ( truy vấn chính xác ngay cả đối với tiếng Việt nhé ).
baoquocmt159 viết 13:17 ngày 10/10/2018
dung câu lệnh like "" để truy vấn tới kiểu ký tự
cái này cũng dễ mà mình quên mất oy.giờ lục lại mất nhiều thời gian lắm.
bạn tìm hiểu thêm nhé
ngocphot viết 13:14 ngày 10/10/2018
không có hàm nào của mysql làm dc như thế này đâu bạn, mình tự viết hàm thôi. Cách làm đơn giản nhất là:
- đánh index cho các keyword trong db
- khi người dùng nhập 1 đoạn, lấy keyword có index cao nhất ở db rồi tìm trong đoạn kia có key đó ko. Nếu ko có thì tìm với keyword có index thấp hơn.
Còn tìm key trong 1 đoạn thì có nhiều cách, đơn giản lắm, bạn tự tìm hiểu ở php nhá

Good luck.
chanhtong1 viết 13:14 ngày 10/10/2018
trong trường hợp ngược lại thì bạn có thể dùng.

select * from dbo.[tableName] where keyword like N'%' + @keyword + '%'

- với @keyword là từ khóa nhập vào:ví dụ ( 'việt nam','cộng hòa',...)
- dbo.[tableName]: bảng thông tin..
- '%' + @keyword + '%' : để so sánh từng chuỗi nhỏ với @keyword, nếu không có '%' thì sẽ so sánh cả chuỗi.
- N: chuỗi tiếng việt

KHông biết với yêu cầu của bạn thì có thể làm ngược lại được ko, thử xem.
haindse viết 13:22 ngày 10/10/2018
Dùng cái này thử xem có ra đúng kết quả không :

Select * From table where keyword LIKE CONCAT('%',".$String.",'%')
Bài liên quan
0