在我的模式中,对于一组明确的表,如果任何字符字段包含逗号,则必须用双引号括起来。如何一次性为该组表的所有字符字段实现此目的。我是使用Oracle 11g?
答案 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||'"');