如何使用正则表达式或任何其他方法在 PL/SQL 中提取单引号内的字符串 [重复]

Posted

技术标签:

【中文标题】如何使用正则表达式或任何其他方法在 PL/SQL 中提取单引号内的字符串 [重复]【英文标题】:How to extract string inside single quotes in PL/SQL using regex or any other method [duplicate] 【发布时间】:2018-09-11 12:30:20 【问题描述】:

我需要在 PL/SQL 中的单引号内获取字符串,无论是使用正则表达式还是任何其他有效的方法。

example: 'He is my uncle's son.and he is a programmer' 
output: He is my uncle's son.and he is a programmer

提前致谢!!

【问题讨论】:

考虑使用trim(<your_text>,'''')?如果您使用的是旧版本 ltrim(rtrim(<your_text>,''''),'''')? 像 'a single quote '' ' 这样的字符串呢?结果应该是什么?另外,你能有像'这里开始引用的部分:'' QUOTED '''这样的字符串吗? 在 Oracle 中,当我们想在字符串中添加单引号时,我们将其写成 (' I am going to see "The Palace" ') 所以预期的输出是 ( I am going to see 'The Palace' ) 所以我的要求也一样,我只是想以同样的方式获得。 您的字符串是否可以包含一个包含您想要保留的单引号的子字符串?比如:“先生。奥布莱恩是他的名字? @Gary_W :是的,应该保留。 【参考方案1】:

使用可以使用替换功能..

select replace ('<some text here>',chr(39)) from dual;

示例select replace (q'[this is ' having' mult'iple ' quotes'']',chr(39)), q'[this is ' having' mult'iple ' quotes'']' original_text from dual;

输出将是:

这是有多个引号

这将删除字符串中的所有单引号。

如果要删除双引号,请使用 chr(34)。

【讨论】:

感谢您的回复,但我不想删除单引号我想要单引号内的字符串而不删除单引号,然后该字符串将在循环内发送。 列中的单引号不会被删除...函数会通过删除单引号返回字符串...

以上是关于如何使用正则表达式或任何其他方法在 PL/SQL 中提取单引号内的字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL:通过正则表达式查找所有西里尔文(或非拉丁文)符号

正则表达式背后的 pl/sql 否定查看

如何使用 PL/SQL 正则表达式将 HTML 标记及其内容替换为相同数量的“?s”?

PL/SQL。使用 regexp_like 正则表达式解析 clob UTF8 字符

如何在 Pl/SQL 中编写正则表达式匹配模式?

PL/SQL 正则表达式检查