업데이트에서 T-SQL 문자열 바꾸기


83

기존 값에서 하위 문자열 대체가 수행되도록 열 값을 업데이트해야합니다.

예:

데이터를 포함 abc@domain1, pqr@domain2

@domain2로 대체 되는 값을 업데이트해야합니다 @domain1.


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

그래 - 그들은 같은 칼럼에 ..
Sekhar

답변:


151

REPLACE 구문 :

REPLACE (문자열 _ 표현식, 문자열 _ 패턴, 문자열 _ 대체)

따라서 필요한 SQL은 다음과 같아야합니다.

UPDATE [DataTable] SET [ColumnValue] = REPLACE([ColumnValue], 'domain2', 'domain1')

1
제 경우에는 큰 따옴표를 작은 따옴표로 바꿔야했습니다. 다음 REPLACE ([ColumnValue], ' "', '' '')를 사용했습니다. 끝은 작은 따옴표 4 개입니다.
Daniel Butler

11

누구든지 관심이 있다면 NTEXT다음 형식을 사용하세요.

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

4
그 문 자체는 업데이트를 실행하지 않습니다. 다음을 수행해야합니다. UPDATE [DataTable] SET SET [ColumnValue] = CAST (REPLACE (CAST ([ColumnValue] AS NVARCHAR (MAX)), 'domain2', 'domain1') AS NTEXT) FROM [DataTable]
Adam Hey

6
update YourTable
    set YourColumn = replace(YourColumn, '@domain2', '@domain1')
    where charindex('@domain2', YourColumn) <> 0

2
이 답변과 같이 where 절을 포함하면 수락 된 답변에 비해 효율성이 향상됩니까?
Jon Schneider
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.