我是SQL的新手,我试图获得与productID的用户输入匹配的完整产品列表.就像是:
SELECT ProductID, ProductName FROM Products WHERE ProductID LIKE '%15%'
Run Code Online (Sandbox Code Playgroud)
我希望列出所有匹配的产品,如:15,150,2154等
不幸的是我遇到了问题,因为productID字段是INT而不是字符串.有一些相对简单的方法吗?
Pek*_*ica 33
你可以CAST将字段转换为字符串:
... WHERE CAST(ProductID as CHAR) LIKE '%15%'
Run Code Online (Sandbox Code Playgroud)
这对性能非常不利,因为mySQL无法使用为INT列创建的任何索引.但是LIKE,即使在varchar字段上完成,也总是很慢:没有办法让索引加速LIKE查询.
可能值得拥有一个varchar反映int列值并在那个上做LIKE 的第二列- 您必须进行基准测试以确定它是否会有任何好处.
您可以使用int 将 int 转换为string CONVERT(ProductID, CHAR(16)) AS ProductID,然后使用LIKE.所以在你的情况下它会
SELECT ProductID, ProductName FROM Products
WHERE CONVERT(ProductID, CHAR(16)) LIKE '%15%'
Run Code Online (Sandbox Code Playgroud)
您应该记住,查询将在没有索引支持的情况下进行全表扫描.因此,它将非常昂贵且耗时.
| 归档时间: |
|
| 查看次数: |
23533 次 |
| 最近记录: |