SQL 服务器中从右到左的字符串
right to left string in SQL server
考虑以下包含波斯语(从右到左的语言)和英语(从左到右的语言)的查询:
SELECT 'نرم افزار SQL سرور'
要求的结果是这个字符串:
سرور SQL نرم اوور
是否有任何函数或任何其他方法可以将字符串从 ltr 转换为 rtl?
需要在字符串文字前添加N
:SELECT N'نرم افزار SQL سرور'
。这是正确解释包含的 Unicode 字符所必需的。 (Source)
重要提示:在某些情况下,请避免使用标准复制粘贴将 SELECT 放入 SSMS 命令 window 中。这可能 affect the RTL/LTR order。相反,请尝试使用 File > Open.
打开正确组合的文件
并且关于您的评论:
the result should be : سرور SQL نرم افزار`
我承认我只部分理解 RTL 书写系统,但据我所知,波斯语单词 完全按照您输入的顺序输出 (即使阅读右到左)。你能根据 Unicode Bidirectional Algorithm 或类似的标准文档告诉我为什么 SQL 服务器应该更改词序吗?不应该是您期望通过在另一个地方进行预处理,发送预期的字符串形式 SELECT N'سرور SQL نرم افزار'
所做的更改吗?我看不出为什么 SQL SELECT
应该执行更改。 如果是这样,如果将这样一个 SELECT
的结果输入另一个 SELECT
会发生什么?另一个转换? 我有理由认为 SQL 服务器在技术上正确地解释了您的输入。
提示:也许您可以尝试用不同的 Directional formatting characters.
包围您的 RTL 文本
请使用位于 SQL Fiddle 的 MySQL 服务器尝试相同的 SELECT
。不同的服务器和技术,但与 Microsoft SQL 服务器给出的结果相同。
SSMS 与 MS SQL 服务器的结果:
结论:为了得到预期的结果,请相应地形成输入。
相关:
当我们用英文添加数字时,这将再次不起作用,下面的解决方案将起作用
SELECT nchar(8234)+ N'33-M' + N'诊室号' +nchar(8236) + N'就诊'
考虑以下包含波斯语(从右到左的语言)和英语(从左到右的语言)的查询:
SELECT 'نرم افزار SQL سرور'
要求的结果是这个字符串:
سرور SQL نرم اوور
是否有任何函数或任何其他方法可以将字符串从 ltr 转换为 rtl?
需要在字符串文字前添加N
:SELECT N'نرم افزار SQL سرور'
。这是正确解释包含的 Unicode 字符所必需的。 (Source)
重要提示:在某些情况下,请避免使用标准复制粘贴将 SELECT 放入 SSMS 命令 window 中。这可能 affect the RTL/LTR order。相反,请尝试使用 File > Open.
打开正确组合的文件并且关于您的评论:
the result should be : سرور SQL نرم افزار`
我承认我只部分理解 RTL 书写系统,但据我所知,波斯语单词 完全按照您输入的顺序输出 (即使阅读右到左)。你能根据 Unicode Bidirectional Algorithm 或类似的标准文档告诉我为什么 SQL 服务器应该更改词序吗?不应该是您期望通过在另一个地方进行预处理,发送预期的字符串形式 SELECT N'سرور SQL نرم افزار'
所做的更改吗?我看不出为什么 SQL SELECT
应该执行更改。 如果是这样,如果将这样一个 SELECT
的结果输入另一个 SELECT
会发生什么?另一个转换? 我有理由认为 SQL 服务器在技术上正确地解释了您的输入。
提示:也许您可以尝试用不同的 Directional formatting characters.
包围您的 RTL 文本请使用位于 SQL Fiddle 的 MySQL 服务器尝试相同的 SELECT
。不同的服务器和技术,但与 Microsoft SQL 服务器给出的结果相同。
SSMS 与 MS SQL 服务器的结果:
结论:为了得到预期的结果,请相应地形成输入。
相关:
当我们用英文添加数字时,这将再次不起作用,下面的解决方案将起作用
SELECT nchar(8234)+ N'33-M' + N'诊室号' +nchar(8236) + N'就诊'