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;