Sql 无法在oracle中修剪varchar列中的尾随空间
我使用的是Oracle11gdb,在其中一个表中,varchar列的数据有尾随空格。我尝试了修剪函数来更新列,但仍然以字符串末尾的空格为准。尾随空格的原因是什么?以及如何解决这个问题 列内容显示如下Sql 无法在oracle中修剪varchar列中的尾随空间,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我使用的是Oracle11gdb,在其中一个表中,varchar列的数据有尾随空格。我尝试了修剪函数来更新列,但仍然以字符串末尾的空格为准。尾随空格的原因是什么?以及如何解决这个问题 列内容显示如下 select '<'||mycol||'>' from mytab Output : <mysamplestring > select DUMP(mycol) from mytab Output : Typ=1 Len=28: 67,114,117,100,101,32,8
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
从mytab中选择“”
输出:
从mytab中选择DUMP(mycl)
输出:典型值=1 Len=28:671141171001,32,801011111108101117109,32,69120116114,97,991161105111110194160
谢谢修剪()应该可以正常工作!确定它是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);
将列类型从char更改为varchar2,char column blank用空格填充值以填充字段大小。因此,对于char(10)列,当您插入'abc'时,它将自动作为'abc'插入。使用UNISTR为我做的技巧。它删除了字符160和194
update mytab set mycol = REPLACE(mycol,unistr('\00A0'),'')
修剪应该有用。显示我使用的实际query.update查询:updatemytab set mycl=TRIM(mycl);尝试使用
选择“”
或转储(您的_列)
查看完整内容请运行转储(mycol,1016)
。字符160似乎是一个没有被TRIM
删除的字符,结尾的160也很有趣。前26个字符看起来很正常(“原油开采”),但末尾有两个奇数字符。是的,这是一个varchar2列,TRIM不起作用:(好像chr(160)
没有按照上面的评论进行修剪。update hr.countries t set t.country_name=t.country_name | | | | | chr(160)
Trim将不会对其进行修剪。