一尘不染

在INT字段上执行LIKE比较

mysql

我对SQL相当陌生,我试图获取与productID用户输入匹配的产品的完整列表。就像是:

SELECT ProductID, ProductName FROM Products WHERE ProductID LIKE '%15%'

我希望列出所有匹配的产品,例如:15、150、2154等

不幸的是,由于productID字段是INT而不是字符串,因此我遇到了问题。是否有一些相对简单的方法可以解决此问题?


阅读 352

收藏
2020-05-17

共1个答案

一尘不染

您可以CAST将字段输入字符串:

 ... WHERE CAST(ProductID as CHAR) LIKE '%15%'

这对性能非常不利,因为mySQL无法利用它为INT列创建的任何索引。但是LIKE,即使在varchar字段上进行操作,它也总是很慢:无法通过索引来加快LIKE查询的速度。

可能值得拥有第二varchar列来反映该int列的值并在该列上执行LIKE-您必须进行基准测试以查明它是否会对您有好处。

2020-05-17