这是我想要完成的伪(假)查询:
SELECT * FROM myTable
WHERE specific_field IS IN '{$stringPassedIn}'
然后在结果上我想抓住specific_field
匹配传入的字符串的行。
在进行一些研究时,我发现有很多相反的情况,例如:
SELECT * FROM items WHERE items LIKE '%123456%'
但这不是我要找的 - 我不相信。
这是真实世界的应用程序。在我的php
代码中,我提取了一条错误消息。此错误消息包含特定的错误代码。我有一个代码表,我想比较这个错误字符串,然后返回包含字符串中的确切错误代码的行(如上面的第一个查询中所示)。所以我将整个短语传递给查询。如果这是可能的或实际的?或者有更好的方法来实现这一目标吗?
答案 0 :(得分:3)
您可以撤消LIKE
谓词:
SELECT * FROM myTable
WHERE '{$errorMessage}' LIKE CONCAT('%', errorCode, '%')
想想这个例子,下面的表达式将返回true:
'error number 12345 has occurred' LIKE '%12345%'
小心在$ errorMessage上进行适当的转义,以防它包含特殊字符。或者更好的是,使用预准备语句并将变量作为参数传递。
答案 1 :(得分:2)
查看MySQL string functions。你可以做点什么
SELECT * FROM myTable
WHERE LOCATE(`specificField`, '{$stringPassedIn}') is not 0