我有一个包含名为NUMBERS的列的表,其值为1234,1235,1278,4567,5434和7890.我正在尝试编写一个过程,该过程将SELECT所有以@NUMBER开头的值。 我以为它看起来像这样:
DECLARE @NUMBER as int
SET @NUMBER = 1
SELECT * FROM table1 WHERE [NUMBER] LIKE (@NUMBER + '%')
但是这给我一个错误'转换varchar值时转换失败'%'数据类型int'。
我怎样才能这样做,如果我输入1作为我的@NUMBER,它将返回以1开头的所有内容(即1234,1235,1278)
答案 0 :(得分:1)
您需要将数字转换为字符串,以便将+
运算符理解为字符串连接(而不是添加):
SELECT *
FROM table1
WHERE cast([NUMBER] as varchar(255)) LIKE cast(@NUMBER as varchar(255)) + '%';
因为like
无论如何都会执行隐式cast()
,所以您应该明确查询正在执行的操作。我也在第一部分添加了一个演员。
注意:您还可以通过更改变量声明来解决此问题:
DECLARE @NUMBER as varchar(255);
SET @NUMBER = '1';
SELECT * FROM table1 WHERE [NUMBER] LIKE (@NUMBER + '%');