2010-12-03 3 views
63

열의 값을 업데이트해야합니다. 기존 값에서 부분 문자열 바꾸기를 수행해야합니다.업데이트에서 T-SQL 문자열 대체

예 :

데이터를 포함 [email protected], [email protected]

I가 @domain2@domain1가 교체되도록 값을 업데이트 할 필요가있다.

+0

각 열에는 몇 개의 전자 메일 주소가 있습니까? abc @ domain1과 pqr @ domain2는 같은 열에 있습니까? – dana

+0

예 - 그들은 같은 열에 있습니다. – Sekhar

답변

119

REPLACE에 대한 구문 :

REPLACE (string_expression, string_pattern, string_replacement)

그래서 당신이 필요로하는 SQL이되어야한다고 :

UPDATE [DataTable] SET [ColumnValue] = REPLACE([ColumnValue], 'domain2', 'domain1') 
4
update YourTable 
    set YourColumn = replace(YourColumn, '@domain2', '@domain1') 
    where charindex('@domain2', YourColumn) <> 0 
+0

이 답변에서 where 절을 포함하면 승인 된 답변보다 효율성이 향상됩니까? –

8

사람이 NTEXT에 대한 관심 경우 다음 형식을 사용하십시오.

SELECT CAST(REPLACE(CAST([ColumnValue] AS NVARCHAR(MAX)),'find','replace') AS NTEXT) 
    FROM [DataTable] 
+1

그 명령문 자체는 업데이트를 실행하지 않습니다. 당신이 다음을 수행해야합니다 UPDATE [DataTable을] (NTEXT AS (교체 CAST ([ColumnValue] NVARCHAR (MAX)), '도메인 2', 'domain1을'AS)) SET [ColumnValue] = CAST를 SET FROM [DataTable] –

관련 문제