4

我有 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 做到这一点。你能帮我吗?

4

2 回答 2

7

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

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

例子@sqlfiddle

于 2012-08-31T06:29:03.767 回答
2

尝试

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


SQL 小提琴演示

于 2012-08-31T06:28:39.347 回答