如何使用oracle sql select语句处理尾随空格

时间:2011-08-17 21:00:40

标签: sql oracle csv removing-whitespace

我已经导入了一个分隔到excel中的标签。我有一个从Oracle数据库转储的数据类型为VARCHAR2(255)的列。

列中格式化的数据具有如下所示的数据:(冒号分隔值)

info 1: info 2: info 3

将文件导入excel工作表后,我有一些记录格式存在问题的记录。冒号之间基本上是空格,导致标签出现问题。

糟糕的记录看起来像这样。记录导入,但该数据在电子表格中未对齐。

info<...whitespace here...>1: info 2: info 3

在Oracle语法中是否有一种方法,我可以以某种方式选择该列并删除嵌入的空格,以便它不会破坏我的标签导入?

3 个答案:

答案 0 :(得分:1)

这只是一个指针。 如果我理解正确,你想用选中的列替换选项卡(\ t)和空格(\ b),以便制表符分隔导入在excel中工作。

您可以使用替换功能删除标签。 (或任何其他可能适用的字符)

示例:

SELECT REPLACE(YOUR_COLUMN_NAME,CHR(9),' ') FROM ...

假设这符合您的数据要求,这会将标签替换为空格(或您提及的任何字符而不是' '

答案 1 :(得分:1)

这可能对您有用:

SELECT regexp_replace('info    :1 info 2: info 3','[[:space:]]{2,}', ' ') FROM dual;

给出:

  

info:1 info 2:info 3

假设你想在'info'和':'

之间留一个空格

答案 2 :(得分:0)

问题:Basically white spaces in between colons

如果“数据”(我使用松散的术语,给定您正在使用的残骸)不包含空格,则可以使用替换函数将UDACE替换为UDF中的“”(空字符串)。或者你可以用COLON替换所有SPACE实例:COLON和COLON:SPACE。