使用正则表达式转换字符串

时间:2013-03-15 14:39:39

标签: sql regex

我使用子字符串转换它并且它工作正常但我必须转换很多,这需要时间。

我被告知正则表达式更高效,更快。

有关正则表达式的任何建议吗?

使用正则表达式将string1转换为string2

string1 = '96457fa012456c41bf9200011da2d8fa'

string2='\96\45\7f\a0\12\45\6c\41\bf\92\00\01\1d\a2\d8\fa'

提前谢谢

1 个答案:

答案 0 :(得分:1)

这适用于Oracle - 用SQL Server取代Oracle的正则表达式实现应该很简单:

select regexp_replace(
  '96457fa012456c41bf9200011da2d8fa', 
  '(..)', 
  '\\\1') 
from dual

说明:

  • 我们希望匹配任何一对字符=> “..”
  • 我们希望“存储”我们刚刚匹配的字符,因此将它们包含在捕获组中=> “(..)”
  • 在我们的替换字符串中,我们想要获取匹配组的内容=> “\ 1”
  • 我们想在每个组之前添加一个反斜杠=> “\\\ 1”
  • dual只是Oracle中的虚拟表