我有此表,该表存储员工的信息。 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.
答案 0 :(得分:5)
您应该认真地避免在您的SQL表中存储CSV数据,因为它表示未规范化的数据。就是说,有一种方法可以对@string
中的数据进行稍许校正,即使是CSV数据也可以编写您的查询:
DECLARE @string varchar(25) = '453,454';
SELECT
FirstName + ' ' + LastName Employee
FROM Employee
WHERE ',' + @string + ',' LIKE '%,' + CONVERT(varchar(10), ID) + ',%';
这里的技巧是将您输入的CSV 453,454
转换成以下格式:
,453,454,
然后,我们只需在修改后的CSV字符串中搜索%,ID,%
。
答案 1 :(得分:3)
尝试一下
DECLARE @string varchar(25) = '453, 454';
SELECT FirstName + ' ' + LastName as Employee
FROM Employee AS E
JOIN STRING_SPLIT(@string, ',') AS S
ON S.value = E.ID
答案 2 :(得分:0)