terça-feira, 25 de agosto de 2009

Split parte 1

Esse exemplo quebra uma linha separada por ";" em colunas, usando recursos do XQuery.


Create Table #tmpLista (xCol VarChar(max))
Insert Into #tmpLista Values ('Linha A1;Linha B1;Linha C1;Linha D1;Linha E1;Linha F1')
Insert Into #tmpLista Values ('Linha A2;Linha B2;Linha C2;Linha D2;Linha E2;Linha F2')
Insert Into #tmpLista Values ('Linha A3;Linha B3;Linha C3;Linha D3;Linha E3;Linha F3')
Insert Into #tmpLista Values ('Linha A4;Linha B4;Linha C4;Linha D4;Linha E4;Linha F4')
Insert Into #tmpLista Values ('Linha A5;Linha B5;Linha C5;Linha D5;Linha E5;Linha F5')
Insert Into #tmpLista Values ('Linha A6;Linha B6;Linha C6;Linha D6;Linha E6;Linha F6')
Insert Into #tmpLista Values ('Linha A7;Linha B7;Linha C7;Linha D7;Linha E7;Linha F7')
Insert Into #tmpLista Values ('Linha A8;Linha B8;Linha C8;Linha D8;Linha E8;Linha F8')
Insert Into #tmpLista Values ('Linha A9;Linha B9;Linha C9;Linha D9;Linha E9;Linha F9')
Insert Into #tmpLista Values ('Linha A10;Linha B10;Linha C10;Linha D10;Linha E10;Linha F10')

;WITH tmpListaDados (DadosXML) AS (
SELECT CAST('' + REPLACE(xCol,';','') + '' AS XML)
FROM #tmpLista)
SELECT CAST(DadosXML.query('for $coluna in /N return $coluna/n[1]/text()') AS VARCHAR(max)) As Coluna1,
CAST(DadosXML.query('for $coluna in /N return $coluna/n[2]/text()') AS VARCHAR(max)) As Coluna2,
CAST(DadosXML.query('for $coluna in /N return $coluna/n[3]/text()') AS VARCHAR(max)) As Coluna3,
CAST(DadosXML.query('for $coluna in /N return $coluna/n[4]/text()') AS VARCHAR(max)) As Coluna4,
CAST(DadosXML.query('for $coluna in /N return $coluna/n[5]/text()') AS VARCHAR(max)) As Coluna5,
CAST(DadosXML.query('for $coluna in /N return $coluna/n[6]/text()') AS VARCHAR(max)) As Coluna6
FROM tmpListaDados

Drop Table #tmpLista

Nenhum comentário:

Postar um comentário