我有一个表,该表的clob列中包含一个像这样的值:<root><node><a>text1a</a><b>text1b</b></node><node><a>text2a</a><b>text2b</b></node></root>
使用PL / SQL,我需要对其进行查询并分两行获取此输出:
<node><a>text1a</a><b>text1b</b></node>
<node><a>text2a</a><b>text2b</b></node>
每个可能超过4000个字符。 标签必须包含在输出中。
答案 0 :(得分:2)
将clob转换为xmltype并使用xmltable对其进行解析:
DECLARE @Vars TABLE([ID] NOT NULL IDENTITY, [Var] NVARCHAR(MAX))
/*
INSERT Values to @Vars
*/
DECLARE @ID INT, @Var NVARCHAR(MAX)
WHILE EXISTS (SELECT 1 FROM @Vars)
BEGIN
SELECT TOP 1 @ID = [ID], @Var = [Var] FROM @Vars ORDER BY [ID]
INSERT TableA
EXEC(@Var)
DELETE @Vars WHERE [ID] = @ID
END
答案 1 :(得分:-1)
原始数据不在varchar中;它在某些LOB中。如果可以返回2个lob,可以查找PLSQL表函数(将函数放入from子句中),并利用dbms_lob包返回2行,其中每行也是一个LOB。
如果要将其作为varchar数据返回,则限制为4000。您所要做的就是在4000行中返回多行,并将它们全部合并到客户端软件中。
您可以在此链接中看到将blob拆分为4000字节字符串的解决方案。 https://medium.com/@thesaadahmad/a-blobs-journey-from-the-database-to-the-browser-98884261e137