SQL服务器中从右到左的字符串

Beh*_*nam 9 sql sql-server-2008-r2

考虑下面包含波斯语(从右到左语言)和英语(从左到右语言)的查询:

SELECT '??? ????? SQL ????'
Run Code Online (Sandbox Code Playgroud)

所需的结果是这个字符串:

سرورSQLنرمافزار

是否有任何函数或任何其他方法将字符串从ltr转换为rtl ??

mir*_*lav 5

要求N在字符串文字前添加:SELECT N'??? ????? SQL ????'。这是正确解释包含的Unicode字符所必需的。(来源

重要说明:在某些情况下,请避免使用标准的复制粘贴,以便将SELECT放入SSMS命令窗口。这可能会影响RTL / LTR顺序。而是尝试使用File> Open打开正确组成的文件。

关于您的评论

结果应该是:???? SQL ??? ?????`

我承认我只是部分理解RTL编写系统,但是据我所见,波斯语单词的输入顺序与输入时的顺序完全相同(即使从右到左阅读)。您能否向我展示基于Unicode双向算法或类似标准的文档,为什么SQL Server应该更改单词顺序?您是否应该通过在其他地方进行预处理,发送期望的字符串形式来进行更改,而不希望这样做SELECT N'???? SQL ??? ?????'?我看不出为什么只有SQL SELECT才能执行更改。如果是这样,如果将这样的结果SELECT输入另一个结果会怎样SELECT?另一个转变?我有理由认为SQL Server在技术上正确地解释了您的输入。

提示:也许您可以尝试使用不同的定向格式字符将RTL文本括起来

SELECTSQL Fiddle上对MySQL服务器尝试相同的操作。服务器和技术不同,但结果与Microsoft SQL Server相同。

SSMS与MS SQL Server的结果: 在此处输入图片说明

结论:为了获得预期的结果,请相应地形成输入。

相关: 可以通过用户界面中的适当设置来完成所需的字序转换。