在波斯语中更新查询

时间:2015-06-27 21:01:34

标签: sql sql-server

我的查询在sql server 2012中有问题

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

我用过这个,但结果是0行受影响。我有列نام和其他有波斯名字的列。

2 个答案:

答案 0 :(得分:2)

我猜你在like条款中想要where。并且,实际设置值可能不是like模式。

也许:

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

或者,如果要替换名称:

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

答案 1 :(得分: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的评论。答案。

请参阅sqlfiddle以获取两个不同的更新,其中

  • 将所有%ALI%更新为EHSAN。
  • 另一个用EHSAN更新所有ALI(不是xALIx)。