SQL Server 中从右到左的字符串

问题描述 投票:0回答:2

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

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

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

SQL 语法

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

sql sql-server-2008-r2
2个回答
5
投票
N

SELECT N'نرم افزار SQL سرور'
。这是正确解释所包含的 Unicode 字符所必需的。 (
来源
重要提示:在某些情况下,请避免使用标准复制粘贴将 SELECT 放入 SSMS 命令窗口。这可能会

影响 RTL/LTR 顺序

。相反,请尝试使用 File > Open 打开正确组成的文件。 还有

关于您的评论

结果应该是: ???????????????

我承认我只了解部分 RTL 书写系统,但从我所看到的来看,波斯语单词

会按照您输入的顺序准确地放入输出中
(即使从右到左阅读)。您能否根据

Unicode 双向算法 或类似标准文档向我展示为什么 SQL Server 应更改词序?不应该是您期望通过在另一个地方进行预处理、发送预期的字符串形式SELECT N'سرور SQL نرم افزار'来进行的更改吗?我不明白为什么只有 SQL SELECT

 应该执行更改。 
如果确实如此,如果将这样一个
SELECT
的结果输入到另一个 SELECT
 中会发生什么?另一种转换?
我有理由认为 SQL Server 在技术上正确地解释了您的输入。

提示:也许您可以尝试用不同的
方向格式字符

包围 RTL 文本。

请在 SQL Fiddle

处使用 MySQL 服务器尝试相同的

SELECT

。不同的服务器和技术,但与 Microsoft SQL Server 给出的结果相同。
使用 MS SQL Server 的 SSMS 结果:

enter image description here结论:

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

相关:

可以通过用户界面中的适当设置来完成您期望的词序转换。

当我们用英文添加数字时,这将再次不起作用,以下解决方案将起作用

1
投票
SELECT nchar(8234)+ N' 33-M ' + N'کلینک کمرہ نمبر' +nchar(8236) + N'میں تشریف لائیں'


© www.soinside.com 2019 - 2024. All rights reserved.