我的查询在sql server 2012中有问题
UPDATE STUDENTS SET نام = N'%[احسان]%' WHERE نام = N'%[علی]%';
我用过这个,但结果是0行受影响。我有列نام
和其他有波斯名字的列。
答案 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以获取两个不同的更新,其中