将字符串拆分为Where IN查询的格式化字母

时间:2013-07-10 15:51:41

标签: php mysql

这有点过分了,但我找不到适用于这种特殊情况的任何东西。

我试图通过Mysql查询找到结果,其中db中的项是字符串的一个字母。例如,我有字符串'MYSQL',我需要使用标识符M或标识符Q来检索数据库中的所有内容。

所以db看起来像这样

name     identifier
item1      M
item2      Q
item3      B

我希望搜索'MYSQL'以返回item1和item2。

一个LIKE不起作用,所以我尝试了一个WHERE IN,但除非我格式化'M','Y','S'等文本,否则它不起作用

这是不可能的,但我觉得有一种更有说服力的方式来做到这一点。提前谢谢。

4 个答案:

答案 0 :(得分:0)

使用REGEXP。

如果使用单个字符标识符创建正则表达式,则可以将其与所需的单词匹配。例如:

select * from TABLENAME
where 'MySQL' REGEXP concat('.*', identifier, '.*');

这将获得带有'M'和'Q'的行,但不会带有'B'的行。

答案 1 :(得分:0)

你可能正在倒退。

在Oracle风格的语法中,您使用:WHERE 'MYSQL' LIKE UPPER('%' || identifier_col || '%')其中||是字符串连接,%是通配符。

答案 2 :(得分:0)

为什么不能使用字符串连接和LIKE运算符?

SELECT name FROM table_identifiers
    WHERE UCASE('MYSQL') LIKE UCASE(CONCAT('%', identifier, '%'))

答案 3 :(得分:0)

您可以使用此字符串函数

SELECT * FROM table_name WHERE LOCATE(identifier, "mysql")>0