我有一个 BIGINT 列,我想对其进行部分匹配。
例如@search = 1
应返回第一个数字为 1(1、11、100 等)的所有记录。基本上与 varchar LIKE 相同。
我已经尝试过:
DECLARE @search VARCHAR
SET @search = '1'
和
SET @search = '1%'
并使用:
SELECT
id FROM table
WHERE
CAST(id AS varchar) LIKE @search
向 @search
添加 %
没有帮助。有什么想法可以实现这一点吗?
编辑:这似乎是变量。如果我对 WHERE
子句中的字符串进行硬编码,我就会得到我正在寻找的结果。
SELECT id FROM table WHERE CAST(id AS VARCHAR) LIKE '14%'
这为我提供了 id
为 14*(14、140、1400 等)的所有记录。
最佳答案
试试这个:
DECLARE @search VARCHAR(10)
SET @search = '1'
SELECT id FROM table WHERE CAST(id AS VARCHAR(10)) LIKE @search + '%'
转换为 VARCHAR
时,应始终指定长度。如果您没有定义长度,SQL-Server 将为您分配一个长度。有时为 1
,有时为 30
。阅读 this了解更多信息。
关于BIGINT 列上的 SQL Like/Contains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30904420/