如何匹配我的SQL表列中的确切字符

时间:2017-02-08 16:14:16

标签: mysql sql regex

我正在尝试编写一个将从表列返回特定字符的查询。

例如,假设我有一个类别列,其值为:

neighbors_id= [matrix_cell_id(row, col),...
    matrix_cell_id(row-1, col-1),...
    matrix_cell_id(row-1, col),...
    matrix_cell_id(row-1, col+1),...
    matrix_cell_id(row, col-1),...
    matrix_cell_id(row, col+1),...
    matrix_cell_id(row+1, col-1),...
    matrix_cell_id(row+1, col),...
    matrix_cell_id(row+1, col+1)];

我希望匹配该字符串中的特定数字;例如,尝试匹配2:3:1:11:4

这是我的代码:

1

3 个答案:

答案 0 :(得分:1)

试试这个:

SELECT *
FROM `events` 
WHERE `category` regexp '[[:<:]]1[[:>:]]'
AND SortDate LIKE '%2017-02%' 
AND status=1 

答案 1 :(得分:0)

如果你不关心字符串中出现的位置,你可以在你想要匹配的值周围使用通配符:

SELECT *
FROM `events` 
WHERE (`category` LIKE '1:%' OR `category` LIKE '%:1:%' OR `category` LIKE '%:1')
AND SortDate LIKE '%2017-02%' 
AND status=1 

答案 2 :(得分:0)

如果您使用逗号而不是冒号,则可以使用style

但“正确”的方法是在FIND_IN_SETevents之间建立一个映射表。以下是tips关于最优的许多:许多表设计。

categories不需要前导LIKE '%2017-02%'