oracle 从字符串中删除单引号

pgky5nke  于 2022-11-03  发布在  Oracle
关注(0)|答案(1)|浏览(628)

我将string作为soap服务的输出,string在xml元素中包含单引号',如下所示

<Tracking diffgr:id="Tracking311" msdata:rowOrder="310">
                            <rowId>736729953</rowId>
                            <awbNo>290349641723</awbNo>
                            <Date>12 Oct 2022 13:32</Date>
                            <Activity>OUT FOR DELIVERY</Activity>
                            <Details>Ha'il</Details>
                            <Location>Ha'il</Location>
                            <scanCode>OFD</scanCode>
 </Tracking>

我正在尝试替换details和location tag中的单引号'。如果将上述字符串传递给replace函数,则不会解析查询,因为它不是完整的字符串。

select REPLACE('<Tracking diffgr:id="Tracking311" msdata:rowOrder="310">
                            <rowId>736729953</rowId>
                            <awbNo>290349641723</awbNo>
                            <Date>12 Oct 2022 13:32</Date>
                            <Activity>OUT FOR DELIVERY</Activity>
                            <Details>Ha'il</Details>
                            <Location>Ha'il</Location>
                            <scanCode>OFD</scanCode>
                        </Tracking>',chr(39),'') from dual

上述查询显示简单错误[Error] Execution (45: 41): ORA-00907: missing right parenthesis

svmlkihl

svmlkihl1#

您的字符串中有一个单引号,因此Oracle将其视为字符串的结尾,这就是您得到错误的原因。
您可以执行以下操作:

select REPLACE('<Tracking diffgr:id="Tracking311" msdata:rowOrder="310">
                        <rowId>736729953</rowId>
                        <awbNo>290349641723</awbNo>
                        <Date>12 Oct 2022 13:32</Date>
                        <Activity>OUT FOR DELIVERY</Activity>
                        <Details>Ha''il</Details>
                        <Location>Ha''il</Location>
                        <scanCode>OFD</scanCode>
                    </Tracking>',chr(39),'') from dual;

如果要在SELECT期间从列中删除引号,只需执行以下操作:

select REPLACE(column_name,chr(39),'') from dual;

相关问题