Oracle使用单个空格更新列中的多个空格

use*_*356 2 sql oracle

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

我可以通过更新表set column_name =''执行此操作,其中column_name类似'%%'但是,可能会有一些数据,例如该列中的abc def.我不想打扰那些数据的模式,这意味着如果只想在列中填充空格而不是触摸有任何数据的列时才这样做.

Dav*_*ber 15

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

UPDATE mytable
   SET mycolumn = REGEXP_REPLACE(mycolumn, '\s{2,}', ' ')
 WHERE REGEXP_LIKE(mycolumn, '\s{2,}')
Run Code Online (Sandbox Code Playgroud)

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

UPDATE mytable
   SET mycolumn = REGEXP_REPLACE(mycolumn, ' {2,}', ' ')
 WHERE REGEXP_LIKE(mycolumn, ' {2,}')
Run Code Online (Sandbox Code Playgroud)

使用的原因{2,}是我们不打扰替换不需要的空间.


Laj*_*res 5

使用正则表达式:

update table set column=regexp_replace(column, ' +', ' ')
Run Code Online (Sandbox Code Playgroud)