【发布时间】:2012-08-14 19:32:27
【问题描述】:
我当前的查询如下所示:
$query = "SELECT * FROM t WHERE (data LIKE '$findme') OR (data LIKE '%$findme|%') OR (data LIKE '%|$findme%')";
此列中的数据包含由管道符号 ("|") 分隔的项目,我需要查询来查找包含该字段中出现的任何项目的所有记录。另外,如果此列中只有一项,则不会有“|”存在符号。
示例:
$findme = "12";
查询应该匹配:
13|23|12
12
12|23
3|12|42
查询不应该匹配:
123|32
34|123
我不确定使用 REGEXP 是否会使这更容易,但如果是这样,任何解决方案都是受欢迎的。谢谢!
SQLFiddle 示例: http://sqlfiddle.com/#!3/32afd/5
【问题讨论】:
-
也许是
$query = "SELECT * FROM table WHERE (data='$findme') OR (data LIKE '$findme|%') OR (data LIKE '%|$findme') OR (data LIKE '%|$findme|%')" -
我试过了,但 "3|12|42" 仍然不匹配。 sqlfiddle.com/#!3/32afd/9
标签: mysql regex select sql-like