一尘不染

Oracle用一个空格更新一列中的多个空格

sql

我正在尝试使用普通的sql语句而不是pl sql将可能有一个或多个空格的列更新为一个空格

我可以通过更新表集column_name =’‘来做到这一点,其中column_name就像’%%’一样。但是,该列中可能有一些数据,例如abc
def。我不想打扰该数据的模式,这意味着仅当该列填充空白并且不触摸具有任何数据的列时才这样做。


阅读 292

收藏
2021-03-08

共1个答案

一尘不染

我建议使用正则表达式来执行此操作,既可以进行替换也可以进行匹配:

UPDATE mytable
   SET mycolumn = REGEXP_REPLACE(mycolumn, '\s{2,}', ' ')
 WHERE REGEXP_LIKE(mycolumn, '\s{2,}')

这将用单个空格替换两个或多个连续的空格字符(空格,制表符等)。如果只想替换空格而不是制表符,回车符或换行符,请使用以下命令:

UPDATE mytable
   SET mycolumn = REGEXP_REPLACE(mycolumn, ' {2,}', ' ')
 WHERE REGEXP_LIKE(mycolumn, ' {2,}')

使用{2,}它的原因是为了避免不必要地替换空格。

2021-03-08