我知道Oracle有TRIM
函数,我想用它来修剪一个表中字段的空白。
因此:
update THIRD_PARTY_ADRS_INFO_TEMP
set HOUSE_NO = TRIM(HOUSE_NO);
当我尝试在SQL Developer中运行它时,就会挂起。
我也尝试了TRIM(' ' from HOUSE_NO)
和REPLACE(HOUSE_NO,' ','')
同样效果
这看起来应该很简单......
想法?
答案 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)来满足自己的工作。