我有表类别 (c) 和另一个表 (x),其中有一列可以包含以逗号分隔的 cat ID 作为 varchar 数据类型。我想选择相关类别,但出现错误“将 varchar 值“5”转换为数据类型 int 时转换失败。”当尝试选择时:
SELECT ID, Title FROM c WHERE ID IN (SELECT catIDs FROM x WHERE ID=any);
子查询返回类似“1,3,4”的数据
最佳答案
您需要将子查询返回的 1,3,4
字符串拆分为单独的 int
值。 SQL Server 没有内置函数来执行此操作,但您可以使用 this user-defined function .
在数据库中创建函数dbo.Split
,然后按如下方式重写查询:
SELECT ID, Title
FROM c
WHERE ID IN
(
SELECT s
FROM dbo.Split(',', '1,3,4')
)
我用示例结果 1,3,4
替换了子查询,以缩短查询并使其更易于理解。
关于sql - 将 varchar 值 '1,' 转换为数据类型 int 时转换失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4290961/