检查数字是否由分隔符分隔的字符串

时间:2015-05-26 18:06:15

标签: mysql sql

我有一个varchar字段1-2-55-9

如何进行查询以检查数字是否在此字段中?

select * from x where TEST

要做的测试,例如55 -> yes return record5 -> no7-> no

3 个答案:

答案 0 :(得分:3)

使用INSTR功能

select case when INSTR ('1-2-5-9', '5') > 0 then 'Yes' else 'No' End

更新:

使用FIND_IN_SET功能。

SELECT case when FIND_IN_SET('55',replace('1-2-55-9','-',','))>0 then 'Yes' else 'No' END  

答案 1 :(得分:1)

我只想使用 like声明。语法是标准SQL,因此也适用于其他dbms,如Oracle或SQL Server。

select * from x where (test like '%-55-%') or (test like '55-%') or (test like '%-55')

类似的模式使用通配符(即%)。上面的例子使用了3个条件(按照出现的顺序):

  • 包含-55-
  • 或以55-
  • 开头
  • 或以-55
  • 结尾

或者你可以使用正则表达式来组合所有3个条件

SELECT * FROM x WHERE test regexp '(^|-)55($|-)'

这里它表示字符串55应该以{{1​​}}开头,或者它应该在开头。接下来应该是-或者应该在最后。

以下是正则表达式语法的简短说明:

  • -匹配(a|b)a
  • b表示值的开头
  • ^是值的结尾

PS:您也可以使用$代替rlike,它们是相同的。

另见the mysql documentation for pattern matching

答案 2 :(得分:0)

如果string包含所需的数字,则返回yes,否则返回no。

 select if(LOCATE('5','1-2-5-9')>0,'yes','no')

经过测试并且有效!