2014-12-22 65 views
1

我想更新一列,可以使用一個簡單的SQL語句不PL SQL甲骨文更新多個空間在一列用一個空格

我可能有一個空格或多個空格轉換隻是一個單一的空間可以通過更新表設置column_name ='',其中column_name如'%%' 但是,在該列中可能會有一些數據,如abc def。我不想打擾數據的模式,如果只想在列中填充空格而不觸及具有任何數據的列時才這樣做。

回答

5

隨着正則表達式:

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

這個唯一的困難是,它會取代單個空格用單個空格時,它不是必需的。 –

0

嘗試:

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

我已經使用REGEXP_LIKE解決這個

更新表組列= '' 其中在(從選擇的列的列表格regexp_like('column','^ \ s + $')

謝謝

7

我會建議使用正則表達式來做到這一點,無論是做更換和做匹配:

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,}是讓大家不要打擾空格替換它不必做。

0

嘗試這種情況:

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

其中的第二個參數替換表達式和等( '%%')包含兩個空白空間

在我的情況下,結果是:

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