Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
postgres将sql行转换为特定的xml格式_Xml_Postgresql - Fatal编程技术网

postgres将sql行转换为特定的xml格式

postgres将sql行转换为特定的xml格式,xml,postgresql,Xml,Postgresql,我的表格中有以下数据 name exists ------------------------- Green true Purple false 我必须将这些行转换为以下xml <Green>YES</Green><Purple>false</Purple> YESfalse 我尝试使用xmlforest,但它返回类似这样的结果 <name>Green</name&

我的表格中有以下数据

        name    exists
-------------------------
        Green   true
        Purple  false
我必须将这些行转换为以下xml

<Green>YES</Green><Purple>false</Purple>
YESfalse
我尝试使用xmlforest,但它返回类似这样的结果

<name>Green</name><exists>true</exists>
<name>Purple</name><exists>false</exists>
Greentrue
紫檀

对于这样一个简单的输出,使用
格式()

选择格式(“%s”,名称,存在::文本,名称)
从_表;

唯一的缺点是,它不会正确地转义无效XML标记的名称。

对于这样一个简单的输出,使用
format()

选择格式(“%s”,名称,存在::文本,名称)
从_表;

唯一的缺点是,它不会正确地转义无效XML标记的名称。

如果没有任何XML验证的简单字符串生成对您来说是可行的,那么您应该使用@a_horse_with_no_name的解决方案

如果要使用PostgreSQL的XML函数创建XML元素,则需要使用格式化函数生成动态SQL:


问题是,元素名不能按记录动态设置:

如果不进行任何XML验证的简单字符串生成对您来说是可行的,那么您应该使用@a_horse_with_no_name的解决方案

如果要使用PostgreSQL的XML函数创建XML元素,则需要使用格式化函数生成动态SQL:


问题是,不能为每个记录动态设置元素名称:

这有帮助吗?否则,请告诉我们要更改什么。请不要忘记对所有在任何方面都有帮助的答案进行投票(这是对投入到你的问题中的时间和工作、回答者的荣誉)。如果一个答案完全解决了您的问题,请单击复选标记以接受它(关闭问题)。这有帮助吗?否则,请告诉我们要更改什么。请不要忘记对所有在任何方面都有帮助的答案进行投票(这是对投入到你的问题中的时间和工作、回答者的荣誉)。如果一个答案完全解决了您的问题,请单击复选标记以接受它(关闭问题)
select format('<%s>%s</%s>', name, exists::text, name)
from the_table;
CREATE OR REPLACE FUNCTION create_xml(_name text, _val boolean) RETURNS xml
AS $$
DECLARE
    _result xml;
BEGIN
    EXECUTE format('SELECT xmlelement(name %I, %s)', _name, _val::text) INTO _result;

    RETURN _result;
END;
$$ LANGUAGE plpgsql;