【发布时间】:2014-09-08 18:43:58
【问题描述】:
我想要这样的查询:
SELECT TOP 60 lcode
FROM LessonChart
WHERE lcode LIKE '1%'
但是 SQL Server 说 int 到 varchar 的转换不好,关键字“LIKE”效率不高...
我应该做什么来代替这段代码?
【问题讨论】:
-
更改设计,使操作不需要。也许它不应该是一个 INT 列?
-
这是因为 LIKE 用于评估字符值,而不是整数。您必须将您的 lcode 转换为 varchar 才能正常工作。
-
@SeanLange SQL Server will automatically perform a cast 这里(不确定其他供应商),但一个大问题是查询不再是Sargable。 OP 清楚地说明了问题“将 int 转换为 varchar 不好”并且关键字“LIKE”效率不高”。
-
它不是 sargable 的原因是因为隐式转换。这都是错误数据类型的尖叫声。
-
你想从数据中得到什么?所有以1开头的东西? 1、10、100、1234 等
标签: sql-server type-conversion int sql-like varchar