我正在尝试编写一个将从表列返回特定字符的查询。
例如,假设我有一个类别列,其值为:
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
答案 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_SET
和events
之间建立一个映射表。以下是tips关于最优的许多:许多表设计。
categories
不需要前导LIKE '%2017-02%'
。