我想检查在名为"tag"的列中是否包含使用正则表达式的两位数数字。
我的查询:
$FilterTag="3,2,11"
$sql = "SELECT * FROM table1 WHERE bTown = ? AND REGEXP_LIKE(tag, '.*[$FilterTag]')";
我的桌子:数据库表标签
唯一的问题是我的查询是找到单个字符数字,就像不是告诉我它包含 11,而是告诉我它包含 1。
有什么方法可以对数字字符集进行分组吗?
你的问题不清楚!
所以你想得到标签有3
和2
和11
的条目。
您必须拆分字符串/过滤器3,2,11
,然后使用循环生成条件:
$sql = "SELECT * FROM table1 WHERE bTown = ?";
foreach (explode(",", $FilterTag) as $value)
$sql .= " AND REGEXP_LIKE(tag, ''b$value'b')";
这应该产生以下查询:
SELECT * FROM table1 WHERE bTown = ?
AND REGEXP_LIKE(tag, ''b3'b')
AND REGEXP_LIKE(tag, ''b2'b')
AND REGEXP_LIKE(tag, ''b11'b')
额外:
要仅允许 1 到 99 之间的数字,请使用以下正则表达式:
'b[1-9][0-9]?'b
演示
要允许两位数字(数字 <10 的前导零)请使用:
'b(0[1-9]|[1-9][0-9])'b
演示
返回包含 2 位数字的所有记录。
select * from table1
where tag REGEXP ('^[0-9]{2}$');