2010-12-03 14 views
63

列の値を更新する必要があります。既存の値に対して部分文字列の置換を行う必要があります。更新のT-SQL文字列置換

例:

データが含まれてい[email protected][email protected]など

私は@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(REPLACE CAST([ColumnValue] NVARCHAR(MAX))、 'ドメイン2'、 'ドメイン1' AS)) SET [ColumnValue] = CASTを設定FROM [DataTable] –