在甲骨文中取代CHR(32)

时间:2016-02-25 09:49:55

标签: oracle

我这里有问题,数据库中的记录以空格结束。值是EXT: 但是当我选择这个查询时:

SELECT REPLACE(REPLACE(REPLACE(COL_CONTENT,CHR(10),'\n'),CHR(9),'\t'),CHR(32),'\s') FROM TABLE_A;

记录成为:

+6221\s29023070\sEXT\s:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s

实际上在EXT后的数据库中:没有任何字符或空格。但在EXT之后,记录仍然显示了这么多:

1 个答案:

答案 0 :(得分:2)

如果列是CHAR(n)数据类型且您输入的字符串没有n个字符,那么Oracle将使用空格(CHR(32))字符填充数据,直到它具有完全{{ {1}}字符。

典型的解决方案是不使用n并使用CHAR(n)数据类型。

但您也可以使用VARCHAR2(n)

RTRIM()

(注意:不使用SELECT REPLACE( REPLACE( REPLACE( RTRIM( COL_CONTENT ), CHR(10), '\n' ), CHR(9), '\t' ), CHR(32), '\s' ) FROM TABLE_A; ,因为Oracle只填充右侧,如果您从两端修剪空白,那么您可以删除字符串的前导部分。)