oracle修剪表col中的数据

时间:2011-03-10 14:06:52

标签: sql oracle

我知道Oracle有TRIM函数,我想用它来修剪一个表中字段的空白。

因此:

update THIRD_PARTY_ADRS_INFO_TEMP
set HOUSE_NO = TRIM(HOUSE_NO);
当我尝试在SQL Developer中运行它时,

就会挂起。

我也尝试了TRIM(' ' from HOUSE_NO)REPLACE(HOUSE_NO,' ','')同样效果

这看起来应该很简单......

想法?

3 个答案:

答案 0 :(得分:3)

如果它“挂起”,则表明您的会话被另一个会话阻止。您正在尝试更新表中的每一行;如果另一个会话在同一个表中锁定了一行但尚未提交,则您的会话必须等待。

答案 1 :(得分:2)

很高兴你解决了行锁问题。至于删除各种空白区域,如果是最新的Oracle版本,还可以查看REGEXP_REPLACE。它比修剪要慢一点,但是如果你有多个可能的非打印字符来处理它可能值得一看。

e.g。

select regexp_replace(x,'[[:space:]|[:blank:]|[:cntrl:]]*$','')
   from (select 'ad f cde  '||chr(10)||chr(13)||chr(8)||' ' as x from dual);

答案 2 :(得分:1)

表格中有多少行?您可以尝试仅执行选择而不是更新(例如,使用rownum< 10)来满足自己的工作。