2015-06-27 46 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)。