我的表中有字符串值,包括希伯来字符(或本案例中的任何R-T-L语言)和英语字符(或数字)。
问题是英文字符是颠倒的,看起来像:
בדיקה123456 esrever sti fI kcehC
。
数字和英文字符相反,希伯来文字很好。
如何使用内置的SQL函数来识别英文子字符串(和数字)并将其反转,同时维护其他RTL字符的顺序?任何解决方法都可以:-) ... 感谢
答案 0 :(得分:2)
我相信你的整个字符串是颠倒的,希伯来语单词以正确顺序显示的事实实际上是另一个问题的结果。我怀疑希伯来语单词是以非词汇顺序存储的。
理论上,您应该能够通过简单地反转字符串来解决问题,然后强制SQL Server从左到右显示阿拉伯语单词。这是通过在字符串的正面和背面附加一个特殊字符来完成的,如下所示:
DECLARE @sourceString NVARCHAR(100) = N'123456 בדיקה esrever sti fI kcehC';
DECLARE @reversedString NVARCHAR(4000) = nchar(8237) + REVERSE(@sourceString) + nchar(8236)
SELECT @reversedString;
答案 1 :(得分:0)
我从未使用过希伯来字符,所以我不确定这是否有效,
但是我认为你可以使用patindex
实现带有while循环的函数步骤:
当我有时间和发布实际代码时,我会玩这个,对不起,如果我的涂鸦没有任何意义
答案 2 :(得分:0)
您可以在SQL Server中使用ASCII函数来获取DB中文本字段中字符的ascii值。获得ascii值后,将其与英语可见字符和数字的有效范围进行比较。其他任何东西都可以被视为希伯来字符。
在SQL Server中也会自动存在REVERSE函数,用于根据需要反转字符串。
以下链接有一些示例代码。
http://www.sqlservercurry.com/2009/09/how-to-find-ascii-value-of-each.html