Php 将字符串拆分为查询中位置的格式化字母
这有点简单,但我找不到任何适合这种特殊情况的方法 我试图通过Mysql查询找到一个结果,其中db中的项是字符串中的一个字母。例如,我有字符串'MYSQL',我需要检索数据库中标识符为M或Q的所有内容 所以db看起来像这样Php 将字符串拆分为查询中位置的格式化字母,php,mysql,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',等等,否则它
name identifier
item1 M
item2 Q
item3 B
我想搜索“MYSQL”以返回item1和item2
LIKE不起作用,所以我尝试了WHERE-IN,但除非我将文本格式化为'M','Y','S',等等,否则它就不起作用
这不是不可能的,但我觉得有一种更雄辩的方式可以做到这一点。提前感谢。使用REGEXP
如果使用单字符标识符创建正则表达式,则可以将其与所需的单词相匹配。例如:
select * from TABLENAME
where 'MySQL' REGEXP concat('.*', identifier, '.*');
这将得到带有“M”和“Q”的行,但不会得到带有“B”的行。您可能在做类似的事情
在Oracle风格的语法中,您会使用:
WHERE'MYSQL'类似于UPPER('%''''.| | identifier| col |'%')
其中|
是字符串串联,%
是通配符。为什么不能使用字符串串联和类似于运算符
SELECT name FROM table_identifiers
WHERE UCASE('MYSQL') LIKE UCASE(CONCAT('%', identifier, '%'))
您可以使用这个字符串函数
SELECT * FROM table_name WHERE LOCATE(identifier, "mysql")>0
你坚持只在MySQL中实现它吗?如果您用PHP构造查询,这将很容易。这意味着什么:“类似于
的不起作用”?为什么是正则表达式?它会减慢查询速度,您只需模拟like运算符的正常通配符。。。