Concatenando cordas de duas linhas diferentes em uma mesa
Pergunta
Estamos tentando refazer o SQL em um produto. O produto armazena XML em uma tabela da seguinte forma:
XML_STORAGE - UID IDENTITY - PARENT_ID INTEGER - SEQ INTEGER - XML VARCHAR(3800)
A maneira atual de fazer isso é a seguinte:
Recuperar todas as linhas para pai_id = n. Em seguida, analise as linhas buscadas no código e concatença as cordas XML em um XML grande antes de analisar. A coluna SEQ é usada para solicitar o resultado para que as cadeias XML possam ser concatenadas corretamente. Espero que isso esteja claro.
O que estamos tentando fazer é refazer isso para que possamos usar uma variante SQL para recuperar a string inteira e apenas buscar uma linha de volta do DB2. Existe uma função DB2 que nos permitirá concatenar a string em todas essas linhas em uma corda grande no ResultSet. Como seria um SQL. Por favor, me avise. Qualquer ajuda é muito apreciada.
Obrigado! - Azeem
Solução
Verifique as consultas recursivas no DB2, como mencionado aqui
Outras dicas
Sim existe. Trancar XMLELEMENT
, XMLAGG
, e XMLSERIALIZE
. Isso deve fazer o truque para a maioria das pessoas. Um exemplo que você pode ver na seguinte pergunta Saia uma consulta DB2 SQL XML para um arquivo XML exclusivo
Editar:
Por que você não faz algo como select '<tag1>', col1. '</tag1><tag2>', col2, '</tag2>' from table
? Se você precisar combinar todas as linhas em uma, então execute um pós -processamento para remover as quebras da linha.