Oracle-SQL:生成具有单引号属性的XML

iyzzxitl  于 2023-01-30  发布在  Oracle
关注(0)|答案(2)|浏览(110)

我正在Oracle SQL中构建XML。

我只想把那些双引号转换成单引号。

是否有Oracle XML函数或参数可用于指定此格式?

eanckbw9

eanckbw91#

您可以使用现有代码,然后将'替换为',将"替换为'

SELECT REPLACE(
         REPLACE(
           your_xml,
           '''',
           '''
         ),
         '"',
         ''''
      ) AS single_quoted_xml
FROM  your_query

其中,对于示例数据:

CREATE TABLE your_query (your_xml) AS
SELECT '<Test Test01="001" Test02="002">value</Test>' FROM DUAL UNION ALL
SELECT '<Test Test01="a ''quote''" Test02="another ''quote''">and more ''quotes'' here</Test>' FROM DUAL;

输出:
| 单引号XML|
| - ------|
| 价值 |
| 并在此引用更多内容' quotes' here |
fiddle

ajsxfq5m

ajsxfq5m2#

在Oracle SQL中,四(4)个单引号表示为一(1)个单引号,因此只需使用Replace()函数即可:

WITH tst AS
        (Select '<Test Test01="001" Test02="002">Value</Test>' "MY_XML" From Dual)

Select MY_XML, Replace(MY_XML, '"', '''') "MY_XML_2" From tst

MY_XML                                       MY_XML_2                                   
-------------------------------------------- --------------------------------------------
<Test Test01="001" Test02="002">Value</Test> <Test Test01='001' Test02='002'>Value</Test>

或者在PL/SQL中

SET SERVEROUTPUT ON
Declare
    mXML   VarChar2(50) := '<Test Test01="001" Test02="002">Value</Test>';
    sq     VarChar2(1) := '''';
Begin
    DBMS_OUTPUT.PUT_LINE(Replace(mXML, '"', sq));
End;
/

anonymous block completed
<Test Test01='001' Test02='002'>Value</Test>

相关问题