简体   繁体   中英

mySQL - FIND_IN_SET() doesn't find the value

I m trying to get posts which includes a spesific tag.

The tag row content

,iphone|1468338028,,android|1468338028,,blackberry|1468338028,

query

SELECT * FROM shares WHERE FIND_IN_SET(tag, 'iphone') > 0 ORDER BY DATE DESC limit 10

What is the correct way to do it ?

Your tag is iphone|1468338028 and you look for iphone . That does not match.
Replace the | with , to separate the values.

SELECT * FROM shares 
WHERE FIND_IN_SET(replace(tag, '|', ','), 'iphone') > 0 

Another alternative is to use LIKE "%text%" , if you're not required to use FIND_IN_SET() .

SELECT * FROM shares 
WHERE tag LIKE "%iphone%"
ORDER BY DATE DESC limit 10

Above snippet should achieve the same, thus avoiding replacing and trimming issues.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM