我有一个varchar
字段1-2-55-9
如何进行查询以检查数字是否在此字段中?
select * from x where TEST
要做的测试,例如55 -> yes return record
,5 -> no
,7-> no
答案 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
,它们是相同的。
答案 2 :(得分:0)
如果string包含所需的数字,则返回yes,否则返回no。
select if(LOCATE('5','1-2-5-9')>0,'yes','no')
经过测试并且有效!