簡體   English   中英

SQL和FIND_IN_SET進行過濾

[英]SQL & FIND_IN_SET for filtering

在主頁上,我有一個場所列表,您可以根據場所,名稱和該場所提供的服務進行過濾。 我有SQL表,其中包含帶有提供的服務的數字定義的場所列表:

id | name            | location | services
1  | Establishment 1 | Florida  | 2,5
2  | Establishment 2 | New York | 1,3,5

在主頁上,應該通過選中復選框來過濾服務。

我正在尋找SQL查詢,該查詢將根據所選服務過濾結果 (例如,如果用戶選擇了服務5,它將顯示上表中的兩個結果,但是如果用戶選擇了服務5和1,則僅顯示ID為2的服務,如果選擇了5和4-無結果)。

我發現FIND_IN_SET可能有效,但是如果用戶選擇多個服務,則似乎不起作用:

SELECT * FROM table1 t WHERE FIND_IN_SET(?, t.services) > 0

-綁定輸入,由POST AJAX發送,作為所選服務的連接,以逗號分隔-例如。 服務=“ 1,3,4”。

您可以嘗試REGEXP

檢查一下:

SELECT * FROM testtbl t WHERE t.services REGEXP '(^|,)(1|3|4)(,|$)'

您需要以這種形式傳遞逗號分隔的值=> 1|3|4

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM