mysql查询中的正则表达式

时间:2012-08-31 06:26:54

标签: mysql sql

我有像

这样的mysql表值
1-2

1-2-3

1-4-5

1-4-5-12-15

15-45-75

1-5-15-25-35-55

55-65-75

我想选择哪些行的编号为5(不是15或25或35)。

我尝试过LIKE查询,但它给出了包含行的所有5个值(包括15,35,45,55)。

SELECT ... WHERE linkage LIKE '%5%'

我认为我们可以通过REGEXP来实现。你可以帮我吗?

2 个答案:

答案 0 :(得分:7)

您可以使用FIND_IN_SET执行此操作:

SELECT ... 
WHERE FIND_IN_SET(5, REPLACE(linkage,'-',','));

示例@ sqlfiddle

答案 1 :(得分:2)

尝试

SELECT ... WHERE concat('-',linkage,'-') LIKE '%-5-%'


SQL Fiddle Demo