用逗号为双引号替换所有字符字段的逗号?

时间:2018-01-10 13:07:03

标签: oracle plsql

在我的模式中,对于一组明确的表,如果任何字符字段包含逗号,则必须用双引号括起来。如何一次性为该组表的所有字符字段实现此目的。我是使用Oracle 11g?

1 个答案:

答案 0 :(得分:0)

不确定我是否正确地遵循了这个问题,但也许这会为您提供所需的信息。

创建我们的示例表:

create table foobar (foo varchar2(30));

用测试值填充它:

insert into foobar values ('There is no comma.');
insert into foobar values ('There is, a comma.');

此查询将包含逗号的值用双引号括起来:

select decode(instr(foo,','),0,foo,'"'||foo||'"') from foobar;

这是输出:

"There is, a comma."
There is no comma.

这是它的工作原理。 INSTR测试列中是否存在逗号。如果没有逗号(INSTR返回0),则DECODE按原样返回列。在所有其他情况下(即存在逗号),我们用双引号包装输出。

对每个表/列重复。

在更新语句中使用语法会很简单,如果这是您要实现的目标。所以,

update foobar 
set foo=decode(instr(foo,','),0,foo,'"'||foo||'"');