在Oracle 12.1中删除列数据中的空格 - SQLPlus

时间:2017-05-11 10:12:52

标签: oracle sqlplus oracle12c

我们正在使用基于Oracle的ERP和我们的专栏之一,它有一个特定的规则,即我们在每个字符串的开头和结尾都有几个空格。它看起来像这样:

       A          |          B
--------------------------------------
   Value1         |123
   Value2         |345

A列中的每个值后面有3个前面和9个空格。我正在尝试使用SQLPlus脚本提取信息:

SET colsep ,
SET pagesize 0
SET feedback OFF
SET heading OFF
SET trimspool ON
SET trimout ON
spool d:\spool.csv
select trim(rtrim(A)), B, from table;
spool out

结果如下:

Value1         ,123
Value2         ,345

我需要的是:

Value1,123
Value2,345

任何想法如何实现? 尝试修剪,rtrim,替换,regexp_replace但它似乎不起作用。

1 个答案:

答案 0 :(得分:2)

使用

select replace(col1||','||col2,' ','') from your_table;

实施例

SQL> create table test12(col1 char(10),col2 integer);

Table created.

SQL> insert into test12(col1,col2) values ('value1',1);

1 row created.

SQL> insert into test12(col1,col2) values ('value2',2);

1 row created.

SQL> commit;

Commit complete.

SQL> select replace(col1||','||col2,' ','') from test12;
value1,1
value2,2
SQL> spool off;
SQL>

test.csv

SQL> select replace(col1||','||col2,' ','') from test12;
value1,1
value2,2
SQL> spool off;