在 Oracle 12.1 - SQLPlus 中删除列数据中的空格
Removing spaces in column data in Oracle 12.1 - SQLPlus
我们使用的是基于 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
知道如何实现吗?
尝试了 trim、rtrim、替换、regexp_replace,但它似乎不起作用。
使用
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;
我们使用的是基于 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
知道如何实现吗? 尝试了 trim、rtrim、替换、regexp_replace,但它似乎不起作用。
使用
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;