以Parameter开头的SQL Server SELECT行

时间:2014-07-03 21:51:39

标签: mysql sql sql-server

我有一个包含名为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)

1 个答案:

答案 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 + '%');