如何在SQL中用多个指定的替换字符串替换多个匹配模式 - Oracle

时间:2015-02-18 10:15:03

标签: sql oracle

我们有varchar2(250)列,其中包含我们要用其他特定文本替换的各种文本数据。 注意:我不想为这个要求使用多个替换功能,有没有更好的方法呢

要求是:

Replace <   with    "less than"
Replace >   With    "greater than"
Replace &   With    and

例如,表中的数据是:

"amount must be < 1 & > 2" 

SQL的输出应为:

"amount must be greater than 1 and less than 2" 

3 个答案:

答案 0 :(得分:1)

据我所知你必须使用3个替换语句。这样的事情: -

SELECT REPLACE( REPLACE( REPLACE ('amount must be < 1 & > 2', '<', 'less than'), '>' ,'greater than'), '&', 'and')
FROM DUAL;

我认为这只是解决方案。

答案 1 :(得分:1)

你需要使用 REPLACE 三次,这不是很费力。

SQL> WITH DATA AS(
  2  SELECT 'amount must be < 1 & > 2' str FROM dual
  3  )
  4  SELECT REPLACE(REPLACE(REPLACE(str, '<', 'less than'), '&','and'),'>','greater than') str
  5  FROM DATA
  6  /

STR
---------------------------------------------
amount must be less than 1 and greater than 2

SQL>

答案 2 :(得分:1)

使用replace功能

SELECT Replace(
          Replace(
            Replace(a, '>', 'greater than'), 
                              '<', 'lesser than'),
                                           '&', 'and')
FROM   Yourtable 

DEMO