我有这样的记录:
Number
1, 2
1, 24
如何通过LIKE只选择2而不是2和24
SELECT * FROM test WHERE number LIKE '%2%'
1,2//只需要这个记录
1, 24
应该避免这样存储非规范化的CSV数据。话虽如此,如果你必须继续,这里有一个方法:
SELECT *
FROM test
WHERE CONCAT(' ', number, ' ') LIKE '% 2 %';
find_in_set
almost做你想要的,但你必须删除空格才能使用它:
SELECT *
FROM test
WHERE FIND_IN_SET('2', REPLACE(number, ' ', '')) > 0
您可以这样做:
SELECT `number`
FROM `test`
WHERE TRIM(SUBSTRING_INDEX(`number`, ',', -1)) = 2 or TRIM(SUBSTRING_INDEX(`number`, ',', 1)) = 2;
SUBSTRING_INDEX
拆分数字,TRIM
删除任何空格,然后我们搜索到数字的两个部分。