我这里有问题,数据库中的记录以空格结束。值是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之后,记录仍然显示了这么多:
答案 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只填充右侧,如果您从两端修剪空白,那么您可以删除字符串的前导部分。)