Eu tenho uma tabela com os seguintes valores de exemplo:
ID VALUE
1 |856|421|
2 |123|795|7125|
3 |96412|85251|2245|
4 |4845|88422|9155|15154|
5 |1165|98742|
Como posso escrever uma instrução select onde o resultado será:
ID Value
1 |856|
1 |421|
2 |123|
2 |795|
2 |7125|
3 |96412|
3 |85251|
3 |2245|
4 |4845|
4 |88422|
4 |9155|
4 |15154|
5 |1165|
5 |98742|
A única constante é que cada grupo de números está sempre incluído entre | personagens. Alguma ideia?
Precisamos preservar os tubos '|'.
Eu peguei emprestada essa função de string dividida desta resposta no StackOverflow. Como seus dados estão incluídos usando
|
você deve selecionar apenas aqueles valores onde data <> '' e finalmente adicionar o delimitador novamente usando a função CONCAT.dbfiddle aqui
Isso também pode ser feito com SQL recursivo, embora eu não possa dizer se isso é uma boa ideia. Preparação de dados:
Consulta recursiva:
Resultados: