2014-12-22 2 views
1

나는 아마도 SQL오라클 업데이트 여러 공간

I를 PL 아닌 일반 SQL 문을 사용하여 단 하나의 공간에 하나의 공간 또는 여러 개의 공백이 할 수있는 열을 업데이트하기 위해 노력하고있어 update table set column_name = ''where '% %'와 같은 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를 사용한 곳에서 열을 선택 (의 열 table where 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 '% %'; 

을 두 번째 파라미터 표현을 교체 등 ('% 1 %')가 두 공백 함유하는 경우. 내 경우

는 결과가 있었다 :

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