考虑以下包含波斯语(从右到左的语言)和英语(从左到右的语言)的查询:
SELECT 'نرم افزار SQL سرور'
所需的结果是这个字符串:
SQL 语法是否有任何函数或任何其他方法可以将字符串从 ltr 转换为 rtl??
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 结果:
结论:
为了得到预期的结果,请相应地形成输入。相关:
当我们用英文添加数字时,这将再次不起作用,以下解决方案将起作用SELECT nchar(8234)+ N' 33-M ' + N'کلینک کمرہ نمبر' +nchar(8236) + N'میں تشریف لائیں'