0

我有像-4,3,2,13,2,13或这样的值的行2

我需要选择任何具有值2的行,包括具有值的行,3,2,1但不是具有值的行 - 在开始时。

谢谢大家

4

3 回答 3

1

为什么是正则表达式?

SELECT ..
WHERE LEFT(yourfield, 1) <> '-'
  AND (
    (yourfield = 2) OR
    (yourfield LIKE '2,%') OR
    (yourfield LIKE '%,2,%') OR
    (yourfield LIKE '%,2')
 )

然后当您试图弄清楚为什么 WHERE 如此复杂时,您应该阅读有关数据库规范化的信息

于 2013-02-19T15:49:28.017 回答
1

我倾向于这样做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,*'
于 2013-02-19T15:52:25.330 回答
0

我能找到的最好和最简单的解决方案:

where sponsored regexp '^[^-]*[1-2]'
于 2013-02-19T19:05:57.997 回答