mysql:避免在where子句中自动转换整型字符串

mysql:避免在where子句中自动转换整型字符串,mysql,casting,Mysql,Casting,在我的应用程序中,我使用一个通用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 如果字符串以整数开头,则保留字符

在我的应用程序中,我使用一个通用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
如果字符串以整数开头,则保留字符串的这一部分

你有避免这种行为的选择或解决方法吗


提前感谢,

在MySQL文档中声明:

在所有其他情况下,参数作为浮点实数进行比较。 我想你可以提出以下问题:

 SELECT * FROM command WHERE id = cast(:search as char) OR name LIKE %:search%;

重铸:按字符搜索无效。但是,我可以将id强制转换为char,并且可以正常工作。因此,正确的请求是:从命令中选择*,其中CASTid为char=:search或name LIKE%:search%;