SQL服务器中从右到左的字符串
考虑下面包含波斯语(从右到左的语言)和英语(从左到右的语言)的查询:
SELECT 'نرم افزار SQL سرور'
所需的结果是这个字符串:
سرورSQLنرمافزار
有没有任何函数或任何其他方式来将字符串从ltr转换为rtl?
它需要在字符串文字前添加N
: SELECT N'نرم افزار SQL سرور'
。 这是正确解释包含的Unicode字符所需的。 (资源)
重要:在某些情况下,请避免使用标准的复制粘贴,以便将SELECT放入SSMS命令窗口。 这可能会影响RTL / LTR订单。 相反,尝试使用“ 文件”>“打开”打开正确组成的文件。
关于你的评论 :
结果应该是:سرورSQLنرمافزار`
我承认我仅仅部分理解RTL书写系统,但从我所能看到的内容来看,波斯语单词按输入的顺序完全按输入顺序输出 (即使从右向左读)。 你能告诉我基于Unicode双向算法或类似的标准文件为什么字顺应该由SQL Server更改吗? 不应该改变你期望通过预处理在另一个地方,发送预期的字符串形式SELECT N'سرور SQL نرم افزار'
? 我没有看到为什么只有SQL SELECT
应该执行更改。 如果是这样,如果将这样的SELECT
结果提供给另一个SELECT
,会发生什么? 另一个转变? 我有理由认为SQL服务器在技术上正确解释您的输入。
提示:也许你可以尝试用不同的方向格式化字符来包围你的RTL文本。
请在SQL Fiddle上尝试使用与MySQL服务器相同的SELECT
。 不同的服务器和技术,但结果与Microsoft SQL Server相同。
来自SSMS和MS SQL Server的结果:
结论:为了得到预期的结果,请相应地形成输入。
相关:可以通过用户界面中的适当设置来完成预期的字序转换。
链接地址: http://www.djcxy.com/p/85851.html