我有此表,用于存储员工信息。 Id的数据类型为bigint。现在在代码中,当开发人员向我发送ID以提取数据时,他以字符串格式向我发送邮件,因为显然他无法将此453, 454
传递给整数字段。无论如何,有没有将其转换成bigint,所以我可以使用它到IN运算符。
DECLARE @string varchar(25) = '453, 454'
SELECT FirstName+' '+LastName Employee FROM Employee WHERE ID IN (CAST(@string AS BIGINT))
当我运行此查询时,出现以下错误。希望有人可以帮忙。
Msg 8114, Level 16, State 5, Line 2
Error converting data type varchar to bigint.
最佳答案
您应该认真避免将CSV数据存储在SQL表中,因为它表示未规范化的数据。话虽这么说,我们有一种方法可以甚至对CSV数据也可以编写您的查询,只需对@string
中的数据稍作修正即可:
DECLARE @string varchar(25) = '453,454';
SELECT
FirstName + ' ' + LastName Employee
FROM Employee
WHERE ',' + @string + ',' LIKE '%,' + CONVERT(varchar(10), ID) + ',%';
Demo
这里的技巧是将您输入的CSV
453,454
转换成以下格式:,453,454,
然后,我们只需在修改后的CSV字符串中搜索
%,ID,%
。