1

这有点简单,但我找不到适合这种特殊情况的任何东西。

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

所以数据库看起来像这样

name     identifier
item1      M
item2      Q
item3      B

我想搜索“MYSQL”以返回 item1 和 item2。

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

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

4

4 回答 4

0

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

SELECT name FROM table_identifiers
    WHERE UCASE('MYSQL') LIKE UCASE(CONCAT('%', identifier, '%'))
于 2013-07-10T16:04:37.033 回答
0

你可以使用这个字符串函数

SELECT * FROM table_name WHERE LOCATE(identifier, "mysql")>0
于 2013-07-10T16:08:16.547 回答
0

使用正则表达式。

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

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

这将为您提供带有“M”和“Q”的行,而不是带有“B”的行。

于 2013-07-10T16:00:48.100 回答
0

你可能会倒着做你的 LIKE 。

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

于 2013-07-10T16:01:49.317 回答