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

时间:2014-12-22 17:16:09

标签: sql oracle

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

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

5 个答案:

答案 0 :(得分:12)

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

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,}的原因是我们不打扰替换不需要的地方。

答案 1 :(得分:5)

使用正则表达式:

update table set column=regexp_replace(column, ' +', ' ')

答案 2 :(得分:0)

尝试:

update mytable
set col = ' '
where replace (col, ' ', null) is null;

答案 3 :(得分:0)

我用regexp_like来解决这个问题

更新表格设置列=' ' 其中的列(从表格中选择regexp_like的列('列',' ^ \ s + $')

由于

答案 4 :(得分:-1)

试试这个:

  update product set name = replace(name, '  ', ' ') where name like '%  %';

其中replace表达式的第二个参数和like('%%')包含两个空格

就我而言,结果是:

TENIS  NIKE  AIR => TENIS NIKE AIR
TENIS  NIKE  MAN => TENIS NIKE MAN