我对SQL很新,我试图获得与productID的用户输入相匹配的完整产品列表。类似的东西:
SELECT ProductID, ProductName FROM Products WHERE ProductID LIKE '%15%'
我希望列出所有匹配的产品,例如: 15,150,2154等
不幸的是我遇到了问题,因为productID字段是INT而不是字符串。是否有一些相对简单的方法呢?
答案 0 :(得分:32)
您可以CAST
字段为字符串:
... WHERE CAST(ProductID as CHAR) LIKE '%15%'
这对性能非常不利,因为mySQL无法使用它为INT列创建的任何索引。但是,即使在varchar字段上完成,LIKE
也总是很慢:没有办法让索引加速LIKE查询。
可能值得拥有第二个varchar
列,该列反映int
列的值并对其进行LIKE - 您必须进行基准测试以确定是否它会做任何好事。
答案 1 :(得分:5)
您可以convert使用CONVERT(ProductID, CHAR(16)) AS ProductID
将字符串转换为字符串,然后使用LIKE
。所以在你的情况下它将是
SELECT ProductID, ProductName FROM Products
WHERE CONVERT(ProductID, CHAR(16)) LIKE '%15%'
您应该记住,查询将在没有索引支持的情况下进行全表扫描。因此,它将非常昂贵且耗时。