使用SQL在字符串中反转使用混合的从左到右和从右到左的语言?

Nad*_* Oz 13 sql sql-server sql-server-2008

我的表中有字符串值,包括希伯来字符(或本案例中的任何RTL语言)和英语字符(或数字).

问题是英文字符是颠倒的,看起来像:בדיקה 123456 esrever sti fI kcehC.数字和英文字符相反,希伯来文字很好.

如何使用内置的SQL函数来识别英文子字符串(和数字)并将其反转,同时维护其他RTL字符的顺序?任何解决方法都可以:-) ...谢谢

小智 0

我从未使用过希伯来字符,所以我不确定这是否有效,

不过我认为你可以使用 patindex 实现带有 while 循环的函数

  • 你需要一个变量来保存反向英语部分@EngTemp
  • 一个变量来保存当前正在处理的子字符串@SubTemp
  • 一个变量,用于保存字符串中仍需要处理的剩余文本@SubNext
  • 一个变量来保存当前子字符串的长度 @Len
  • 输出变量@Out

脚步:

  • 获取一个字符串输入,将其放入@SubNext while PatIndex('%[^az]%', @SubNext) > 0
  • 子字符串到 pat 索引存储在 @SubTemp 中,同时将 @SubNext 修剪到 patindex
  • 将@SubTemp的长度存储在@Len中
  • 如果@Len > 1;设置@Out = @Out + @EngTemp + @SubTemp;设置 @EngTemp = '' (此步骤假设可能存在英文字符串不是行尾的情况)
  • 如果@Len = 1;设置@EngTemp = @SubTemp + @EngTemp
  • 如果@Len = 0;set @Out = @Out + @EngTemp (此时循环也应该关闭)

当我有时间的时候我会玩这个并发布实际的代码,如果我的涂鸦没有任何意义,抱歉