我有此表,用于存储员工信息。 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,%

10-08 15:11