从XML排除空白列

问题描述 投票:0回答:1

我正在尝试将表行转换为XML。我能够通过以下方式进行操作,唯一的问题是它还会为空白列生成XML标签。

create table test_niks_01(x int, y varchar(10));

insert into test_niks_01 values(1, 'ABC');
INSERT INTO test_niks_01 values(2);
INSERT INTO test_niks_01 values(3, '');

--SelecT query_to_xml('SELECT * FROM test_niks_01', false, false, '');

select xmlelement(name "Root", xmlforest (x as X, y as Y));

输出XML:

<Root><x>1</x><y>ABC</y></Root>
<Root><x>2</x></Root>
<Root><x>3</x><y></y></Root>

期望的XML:

<Root><x>1</x><y>ABC</y></Root>
<Root><x>2</x></Root>
<Root><x>3</x></Root>

任何帮助将不胜感激。谢谢

sql xml postgresql postgresql-9.5
1个回答
0
投票

您可以只用nullif()将空字符串转换为第二列中的null

select xmlelement(name "Root", xmlforest (x as X, nullif(y, '') as Y)) from test_niks_01

Demo on DB Fiddle

| xmlelement || :------------------------------ ||   1  x>  ABC  y>  Root> ||   2  x>  Root> ||   3  x>  Root> |
© www.soinside.com 2019 - 2024. All rights reserved.