我有一个表,其中包含名为 NUMBERS 的列,该列的值为 1234、1235、1278、4567、5434 和 7890。我正在尝试编写一个过程来选择以数字 @NUMBER 开头的所有值。 我想它会是这样的:
DECLARE @NUMBER as int
SET @NUMBER = 1
SELECT * FROM table1 WHERE [NUMBER] LIKE (@NUMBER + '%')
但这给了我一个错误“将 varchar 值 '%' 转换为数据类型 int 时转换失败”。
如何才能做到这样,如果我输入 1 作为我的@NUMBER,它将返回以 1 开头的所有内容(即 1234、1235、1278)
最佳答案
您需要将数字转换为字符串,以便将 +
运算符理解为字符串连接(而不是加法):
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 + '%');
关于mysql - SQL Server SELECT 以 Parameter 开头的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24563814/