2015-06-27 25 views
0

我有問題,我的查詢SQL Server 2012中更新查詢在波斯語

UPDATE STUDENTS SET نام = N'%[احسان]%' WHERE نام = N'%[علی]%'; 

我用這一點,但結果是0行受影響。我有欄目نام和其他與波斯語名字的列。

+2

我不明白波斯語,但這似乎是一個複製/粘貼錯誤'SETنام= N'%[احسان]%''當設置一個新值時,通配符%是無意義的,可能也是方形括號 – Steve

+0

看看你的'where' - 這是錯的 –

回答

2

我猜你想在where條款like。而且,實際設置值的方式可能不是like模式。

也許:

UPDATE STUDENTS 
    SET نام = N'احسان' 
    WHERE نام LIKE N'%[علی]%'; 

或者,如果你想更換名稱:

UPDATE STUDENTS 
    SET نام = REPLACE(نام, N'[علی]', N'احسان') 
    WHERE نام LIKE N'%[علی]%'; 
+1

也許值得一提的是,對於Arman先生來說,這個查詢將用* Ehsan *代替所有* something-Ali-something *,而不是* Ehsan-某種東西*(在他執行查詢之前))) – MrSimpleMind

+1

@MrSimpleMind。 。 。你的建議,他真的想'replace()'是合理的。 –

+0

但這對我不起作用:(將所有列的值更改爲新值!!!! –

0

我想你需要一個轉換,

我猜你創建你的表像:

create table STUDENTS ([نام] CHAR(60) COLLATE Arabic_CI_AS); 

create table STUDENTS ([نام] CHAR(60) COLLATE Frisian_100_CI_AI); 

見我sqlfiddle here

update STUDENTS set 
[نام] 
= convert(text, N'احسان' collate Arabic_CI_AS) 
where 
[نام] 
like 
convert(text, N'%علی%' collate Arabic_CI_AS) 
; 

正如我以前說過,這將改變xALIx只EHSAN。不能僅替換事件。請參閱prev中的評論。回答。

見兩個不同的更新,其中

  • 一次更新所有%ALI%至EHSAN的sqlfiddle。
  • 另一個只用EHSAN更新所有ALI(不是xALIx)。