解决方法
需要在字符串文字之前添加N:SELECTN’نرمافزارsqlسرور’.这是正确解释包含的Unicode字符所必需的. (
Source)
重要提示:在某些情况下,请避免使用标准的复制粘贴,以便将SELECT放入SSMS命令窗口.这可以是affect the RTL/LTR order.相反,尝试使用File>打开正确组合的文件.打开.
关于你的评论:
the result should be : سرور sql نرم افزار`
我承认我只是部分地理解了RTL书写系统,但是从我所看到的情况来看,波斯语单词在输入时完全按顺序输入(即使从右向左阅读).您能否根据Unicode Bidirectional Algorithm或类似的标准文档向我展示为什么sql Server应该更改单词顺序?不应该改变你期望在另一个地方进行预处理,发送预期的字符串形式SELECTN’سرورsqlنرمافزار’?我不明白为什么只有sql SELECT应该执行更改.如果确实如此,如果将这样的SELECT结果输入另一个SELECT会发生什么?另一个变化?我有理由认为sql服务器在技术上正确地解释您的输入.
提示:也许你可以尝试用不同的Directional formatting characters包围你的RTL文本.
请在SQL Fiddle尝试与MysqL服务器相同的SELECT.不同的服务器和技术,但结果与Microsoft sql Server相同.
SSMS与MS sql Server的结果:
结论:为了得到预期的结果,请相应地形成输入.
相关:Transformation of word order you expected can be done by appropriate settings in user interface.