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

Mysql 检查数字是否在由分隔符分隔的字符串中,mysql,sql,Mysql,Sql,我有一个像这样的varchar字段1-2-55-9 如何进行查询以检查此字段中是否有数字 select * from x where TEST 例如55->yes返回记录,5->no,7->no,如果字符串包含所需的数字,则执行什么测试返回yes,否则返回no select if(LOCATE('5','1-2-5-9')>0,'yes','no') 测试和工作 如果字符串包含所需的数字,则返回是,否则返回否 select if(LOCATE('5','1-2-5-9')>0

我有一个像这样的
varchar
字段
1-2-55-9

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

select * from x where TEST

例如
55->yes返回记录
5->no
7->no
,如果字符串包含所需的数字,则执行什么测试返回yes,否则返回no

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

测试和工作

如果字符串包含所需的数字,则返回是,否则返回否

 select if(LOCATE('5','1-2-5-9')>0,'yes','no')
测试和工作

使用函数

更新:

使用函数

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

更新:

使用函数

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

我会使用一个
类似的
语句。该语法是标准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
前面应该有
-
或者应该在开头。它后面应该跟一个
-
,或者应该在末尾

下面是对正则表达式语法的简短解释:

  • (a | b)
    匹配
    a
    b
  • ^
    表示值的开始
  • $
    是值的结尾
PS:您也可以使用
rlike
而不是
regexp
,它们是相同的


另请参见。

我只想使用类似于
语句的语句。该语法是标准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
前面应该有
-
或者应该在开头。它后面应该跟一个
-
,或者应该在末尾

下面是对正则表达式语法的简短解释:

  • (a | b)
    匹配
    a
    b
  • ^
    表示值的开始
  • $
    是值的结尾
PS:您也可以使用
rlike
而不是
regexp
,它们是相同的


另请参见。

否返回
yes
在本例中
选择if(定位('5','1-2-55-9')>0,'yes','no')错误否返回
yes
在本例中
选择if(定位('5','1-2-55-9')>0,'yes','no')哪个是wrong@Youssef-更新-立即试用谢谢它可以工作,但如果我们可以直接将
-
指定为seperator@Youssef-更新-立即试用谢谢它可以工作,但是如果我们可以直接将
-
指定为单独的库,这将是一个很好的解决方案,可以在hibernate上实现,但是我们可以将3个
只有一个正则表达式不?哈哈,我要加上它。给我一分钟:)mysql中确实有一个
rlike
关键字。谢谢@bvdb我接受你的答案,因为它可以在
hibernate
;)中使用。)谢谢,这似乎是在hibernate上实现的一个很好的解决方案,但是我们可以将3
与一个正则表达式结合起来吗?不,我要补充一下。给我一分钟:)mysql中确实有一个
rlike
关键字。谢谢@bvdb我接受你的答案,因为它可以在
hibernate
;)中使用。)