我有像-4,3,2,1
和3,2,1
或3
或这样的值的行2
我需要选择任何具有值2
的行,包括具有值的行,3,2,1
但不是具有值的行 - 在开始时。
谢谢大家
为什么是正则表达式?
SELECT ..
WHERE LEFT(yourfield, 1) <> '-'
AND (
(yourfield = 2) OR
(yourfield LIKE '2,%') OR
(yourfield LIKE '%,2,%') OR
(yourfield LIKE '%,2')
)
然后当您试图弄清楚为什么 WHERE 如此复杂时,您应该阅读有关数据库规范化的信息
我倾向于这样做like
:
select *
from t
where concat(',', col, ',') like '%,2,%' and
col not like '-%'
如果您正在寻找“2”,但没有用逗号分隔,那么:
select *
from t
where instr(col, '2') > 0 and col not like '-%'
要获取不以减号开头且包含“2”的列:
where col regexp '^[^-]*2*'
如果逗号很重要,则以下内容应该有效:
where concat(',', col, ',') regexp ',^[^-]*,2,*'
我能找到的最好和最简单的解决方案:
where sponsored regexp '^[^-]*[1-2]'