2010-12-14 4 views
0

테이블 (Tab1)에 문자열 열 (Col1)이 있습니다. 문자열 값에서 '%' 또는 '&'자를 제거하는 스크립트를 작성하고 싶습니다. SQL 업데이트 열 두 번

SELECT REPLACE(Tab1.Col1, '&', ''), 
     REPLACE(Tab1.Col1, '%', '') 
FROM Table1 Tab1 
WHERE Tab1.Col1 like '%[&]%' 
     OR Tab1.Col1 like '%[%]%' 

이 올바른 보이는가

:

이에 대한

셀렉트는 다음과 같습니다? 그것은 어떻게하면 모든 업데이트 성명을 변환 할 것이라고? 나는 다음을 시도했다 :

UPDATE Tab1 
SET Tab1.Col1 = REPLACE(Tab1.Col1, '&', ''), 
    Tab1.Col1 = REPLACE (Tab1.Col1, '%', '') 
FROM Table1 Tab1 
WHERE Tab1.Col1 like '%[&]%' 
     OR Tab1.Col1 like '%[%]%' 

SET에서 두 번 열을 업데이트 할 수 없기 때문에 이것은 작동하지 않는다. 내가 할 수있는 다른 방법이 있습니까? 나는 내가 아마 무언가 바보처럼 여기는 것을 알고있다. 그래서 나의 무지에 사과한다.

미리 감사드립니다.

답변

5

이렇게하면됩니다. Replace는 다른 대체 함수로 다시 전달할 수있는 문자열을 반환합니다.

UPDATE Tab1 
    SET Tab1.Col1 = REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', '') 
    FROM Table1 Tab1 
    WHERE Tab1.Col1 like '%[&]%' OR Tab1.Col1 like '%[%]%' 
1
UPDATE Tab1 
SET Tab1.Col1 = REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', '') 
FROM Table1 Tab1 
WHERE Tab1.Col1 like '%[&]%' 
    OR Tab1.Col1 like '%[%]%' 
0

당신은 내가 분명히 비 휴대용 것들을 피할 수있어 당신이 사용하는 RDBMS 말을하지 않기 때문에 :

UPDATE Tab1 
SET Tab1.Col1 = REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', '') 
WHERE Tab1.Col1 <> REPLACE(REPLACE(Tab1.Col1, '&', ''), '%', ''); 
+0

"나는 분명히 아닌 것들을 피하는거야을 -portable "- erm, Standard SQL은'! ='대신에'<>'를 사용합니다. – onedaywhen

+0

@onedaywhen 'SQL Standard'<> 'Portable'이긴하지만 [right] (http://stackoverflow.com/questions/723195/should-i-use-or-for-not-equal-in-tsql/723426) # 723426) :) –