在传递到查询的字符串中查找匹配的 MySQL 字段


Find Matching MySQL field in String Passed into Query

这是我对我试图完成的任务的伪(假)查询:

SELECT * FROM myTable
WHERE specific_field IS IN '{$stringPassedIn}'

然后在结果上,我想抓取specific_field与传入的字符串匹配的行。

在做一些研究时,我发现有很多相反的情况,例如:

SELECT * FROM items WHERE items LIKE '%123456%'但这不是我要找的——我不相信。

这是现实世界的应用程序。 在我的php代码中,我提取了一条错误消息。 此错误消息包含特定的错误代码。我有一个代码表,我想将此错误字符串与它进行比较,然后返回字符串中包含确切错误代码的行(如上面的第一个查询)。 所以我将整个短语传递到查询中。 如果这甚至可能或实用?还是有更好的方法来实现这一目标?

您可以反转LIKE谓词:

SELECT * FROM myTable
WHERE '{$errorMessage}' LIKE CONCAT('%', errorCode, '%')

考虑此示例,以下表达式将返回 true:

'error number 12345 has occurred' LIKE '%12345%'

小心在$errorMessage上执行正确的转义,以防它包含特殊字符。或者更好的是,使用预准备语句并将变量作为参数传递。

看看MySQL字符串函数。你可以做类似的事情

SELECT * FROM myTable
WHERE LOCATE(`specificField`, '{$stringPassedIn}') is not 0