2017-04-13 71 views
1

我想問你如何在整個表中替換1個字符?在SQL Server中替換整個表中的字符

我想替換字符這是©並將其更改爲Š

我發現:http://www.sqlteam.com/article/using-replace-in-an-update-statement

我看了很多的工作人員,但我發現代碼在整個表替換字符只有一列。我嘗試列的名稱添加到線,但不工作..

我:

Column1 Column2 Column3 
©pple  ©og ©ook 

我需要:

Column1 Column2 Column3 
Špple  Šog Šook 

感謝您的任何意見

+0

「Column1,Column2,Column3」的數據類型是什麼? –

回答

1

您可以在UPDATE聲明一次更新多個字段。

UPDATE dbo.authors 
SET city = replace(city, 'Salt', 'Olympic') 
    , city2 = replace(city2, 'Salt', 'Olympic') 
    , city3 = replace(city3, 'Salt', 'Olympic') 
    , ... 
0
Update table 
set col1=replace(col1,'©','Š'),col2=replace(col2,'©','Š'),col3=replace 
(col3,'©','Š') 
...colN=replace(colN,'©','Š') 
1

如果Column1, Column2, Column3NVARCHAR型的,那麼你必須前綴每個字符串字面量N,如:

UPDATE mytable 
SET Column1 = REPLACE(Column1, N'©', N'Š'), 
    Column2 = REPLACE(Column2, N'©', N'Š'), 
    Column3 = REPLACE(Column3, N'©', N'Š') 

Demo here

0

而其他的答案,回答您的具體問題..使用下面的方法將使用較少的Tlog,並且將更有效,特別是如果您的列非常大(Varchar(m axvar),Nvarchar(max)

update table 
set col1.WRITE('Š',0,1), 
    col2.WRITE('Š',0,1) and so on 
+0

有趣的方法。 TBH我不知道這個'WRITE'語法。但是,這將要求每列都有這個值,否則另一個字符將被覆蓋。也只會替換第一個字符,所以如果多個字符出現在隨機的地方,你可能最終會做更多的工作來讓這個'WRITE'工作。如果這是一次更新,我不會經歷麻煩。儘管如此,感謝這種替代方法。看起來我仍然每天都在學習關於SQL的新東西。 – Jens

+0

@ Jens,是的,它確實如你所說,但你可以使用替換和子串的東西 – TheGameiswar