首页 > 解决方案 > 从数据中删除两个单引号

问题描述

我以某种方式设法从 ODI 获取了一个参数,如数据 'YYYYMMDD' 数据。我无法手动更改单引号,因为它们作为 ODI 中的给定形式用于过滤器,并且在没有函数输出的情况下无法访问。

我可以将其转换为类似于字符串形式的“数据'YYYYMMDD'数据”以使用替换功能或其他东西,但它不起作用。

SELECT REPLACE('data 'YYYYMMDD' data','''','''''') from dual;

字符串中的两个单引号引发错误。

needed output: 'data ''YYYYMMDD'' data'

我非常感谢任何示例或提示。

标签: sqloracle

解决方案


您的示例的问题不在于replace()它本身,而在于您如何提供初始字符串值。里面有单引号,所以你需要转义那些:

SELECT REPLACE('data ''YYYYMMDD'' data','''','''''') from dual;
| REPLACE('DATA''YYYYMMDD''DATA','''','''''') |
| :------------------------------------------ |
| data ''YYYYMMDD'' data                      |

听起来您正在传入初始字符串,因此您无需担心。虽然目前还不清楚为什么你需要操纵它。

您也可以使用替代引用机制,至少对于初始字符串;如果也应用于第二个和第三个参数,在这种情况下它会更长,但可以用于所有这些:

SELECT REPLACE(q'^data 'YYYYMMDD' data^',q'^'^',q'^''^') from dual;
| REPLACE(Q'^DATA'YYYYMMDD'DATA^',Q'^'^',Q'^''^') |
| :---------------------------------------------- |
| data ''YYYYMMDD'' data                          |

db<>小提琴


推荐阅读