在我的应用程序中,我使用泛型where子句在不同的字段中搜索。 我的要求是这样的:
SELECT * FROM command WHERE id = :search OR name LIKE %:search%;
我正在搜索文本“2SAV” 此请求返回一些记录,其中name包含“2SAV”(我想要的),但也包含id = 2的记录。
如果我做更多测试,我会注意到:
SELECT CAST("2SAV" AS SIGNED); //2
SELECT 2="2SAV"; //1
如果字符串以整数开头,则保留此部分字符串。
您是否有选择或解决方法以避免这种情况?
提前致谢,
答案 0 :(得分:1)
在MySQL文档(https://dev.mysql.com/doc/refman/5.7/en/type-conversion.html)中声明:
我认为你可以投入查询:
SELECT * FROM command WHERE id = cast(:search as char) OR name LIKE %:search%;