无法在oracle的varchar列中使用TRIM尾随空格

时间:2017-08-29 11:24:42

标签: sql oracle oracle11g

我正在使用oracle 11g DB,并且在其中一个包含varchar列的表中,数据具有尾随空格。我已经尝试过TRIM函数来更新列,但仍然以字符串末尾的空格为准。尾随空间的原因是什么?以及如何解决这个问题。

列内容显示如下。

select '<'||mycol||'>' from mytab
Output : <mysamplestring >

select DUMP(mycol) from mytab
Output : Typ=1 Len=28: 67,114,117,100,101,32,80,101,116,114,111,108,101,117,109,32,69,120,116,114,97,99,116,105,111,110,194,160

由于

3 个答案:

答案 0 :(得分:0)

trim()应该按预期工作!当然它是varchar2列而不是char列?

update hr.countries t
set    t.country_name = t.country_name || '   ';

update hr.countries t
set t.country_name = trim(t.country_name);

答案 1 :(得分:0)

将列类型从char更改为varchar2,char列使用空格填充值以填充字段的大小。因此对于char(10)列,当您插入'abc'时,它将自动插入为'abc'

答案 2 :(得分:0)

使用UNISTR为我做了诀窍。它删除了字符160和194

update mytab set mycol = REPLACE(mycol,unistr('\00A0'),'')