[英]Better mysql select Query to filter data (PHP)
我有一個問題,我想從我的mysql數據庫中搜索數據,這是怎么回事我有一個搜索字段,用戶輸入位置名稱,然后我在我的數據庫中搜索該位置,並顯示基於搜索位置的用戶名但我有一些用戶在數據庫中有多個位置用“逗號”分隔,所以我的選擇查詢無法找到,這就是我的數據庫看起來的樣子
table name :- users
username || location
john || KIS,ITS
alex || KIS
所以,當有人正在搜索KIS時,它只顯示亞歷克斯名稱而不是約翰的,雖然他也是KIS的一部分,我想知道是否有更好的查詢可以解決我的問題
謝謝
更新了新問題要求的查詢
效勞於
KIS
KIS,(任何事情)一開始
(任何東西),KIS,(任何東西)在中間
(任何事情),KIS終於來了
詢問
SELECT *
FROM users
WHERE location = 'KIS' OR LIKE 'KIS,%' OR LIKE '%,KIS,%' OR LIKE '%,KIS'
如果您需要找到可以使用的輸入字符串的一部分
SELECT * FROM users WHERE location LIKE '%KIS%'
如果您需要獲得正確的輸入,您可以使用
SELECT * FROM users
WHERE FIND_IN_SET(LOWER('KIS'), LOWER(location)) > 0
select username from users where location like '%KIS%'
使用正則表達式。
SELECT * FROM users WHERE location RLIKE '(^|[^_alnum])KIS($|[^_alnum])'
或者,如果您的數據始終以逗號分隔,請使用以下命令:
SELECT * FROM users WHERE location RLIKE '(^|,)KIS($|,)'
但是要知道你的數據庫不是第一種正常形式,並且存儲復雜數據,查找它會對性能產生很大影響。 如果可以使用單獨的表來存儲每個用戶的位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.