我有一个像这样的SQL表:
| SomeID | OtherID | Data
+----------------+-------------+-------------------
| abcdef-..... | cdef123-... | 18,20,22
| abcdef-..... | 4554a24-... | 17,19
| 987654-..... | 12324a2-... | 13,19,20
Run Code Online (Sandbox Code Playgroud)
是否有一个查询,我可以执行查询,如SELECT OtherID, SplitData WHERE SomeID = 'abcdef-.......'返回单个行,如下所示:
| OtherID | SplitData
+-------------+-------------------
| cdef123-... | 18
| cdef123-... | 20
| cdef123-... | 22
| 4554a24-... | 17
| 4554a24-... | 19
Run Code Online (Sandbox Code Playgroud)
基本上将逗号中的数据拆分成单独的行?
我知道将comma-separated字符串存储到关系数据库听起来很愚蠢,但消费者应用程序中的正常用例使得这非常有用.
我不想在应用程序中进行拆分,因为我需要分页,因此我想在重构整个应用程序之前探索选项.
这是SQL Server 2008(非R2).
我有一个SQL Server存储过程,我想将一个varchar逗号分隔的值传递给一个IN函数.例如:
DECLARE @Ids varchar(50);
SET @Ids = '1,2,3,5,4,6,7,98,234';
SELECT *
FROM sometable
WHERE tableid IN (@Ids);
Run Code Online (Sandbox Code Playgroud)
这当然不起作用.我收到错误:
将varchar值'1,2,3,5,4,6,7,98,234'转换为数据类型int时转换失败.
如何在不诉诸构建动态SQL的情况下完成此任务(或相对类似的东西)?