【发布时间】:2015-09-24 21:37:23
【问题描述】:
我已应用“借用”解决方案将分隔字符串拆分为行(我正在使用 MSSQL 2008 R2),但该解决方案特定于 CTE/递归查询。这很好用,但只转换一行数据。我将如何调整它以返回表中的所有行(或者,更好的是,能够包含 where 子句)?
我已经为此研究了两天,而且由于我对 CTE/递归查询或 XML 没有太多经验……欢迎任何专业知识!谢谢!!
DECLARE @RowData varchar(2000)
DECLARE @SplitOn varchar(1)
DECLARE @ObjectID int
SELECT
@ObjectID = ObjectID, @RowData = ObjectName, @SplitOn = ';' from Objects
declare @xml as xml
SET @XML = '<t><r>' + Replace(@RowData , @spliton, '</r><r>') + '</r></t>'
select @objectid as objectid, rtrim(ltrim(t.r.value('.', 'VARCHAR(8000)'))) as splitvalue
from @xml.nodes('/t/r') as t(r)
【问题讨论】:
-
表格中的数据是什么样的?
标签: sql-server xml sql-server-2008 recursion