中间文字使用Sqlserver提取括号中文字符串的技巧(Sqlserver取括号)
SqlServer提取括号中文字符串的技巧
很多时候开发者需要从括号中的字符串中提取某个特定的信息。若该字符串中每一对括号都只有一种内容,那么使用SqlServer自定义函数:Substring 就能够轻松地实现提取,但如果内容包括多对括号,及当中含有其它不同的内容,那么比较复杂,在此就拿一个有三个括号的例子来说明提取方法:
我们基于自定义函数中的Substring函数,以及自定义函数中的PatIndex 对括号中文字符串进行提取。下面是一个简单的案例:
假如我们有一个表格,其中的第一列字段的内容为:
(中国北京) (CP) (来源:YY3000)
实现从上面的例子中提取出: 中国北京和CP 两个字符串,代码如下:
“`sql
select
SUBSTRING(Test,
PATINDEX(‘%(%)%’,Test)+1,
PATINDEX(‘%)%’,Test)-PATINDEX(‘%(%)%’,Test)-1) as substr1,
SUBSTRING(Test,
PATINDEX(‘%)%’,Test)+2,
PATINDEX(‘%)%’,Test,2)-PATINDEX(‘%)%’,Test)-2) as sstr2
from table1
以上代码是令不同括号内容提取出。可以看到substring中用到两个自定义函数 PATINDEX,其用于从一字符串中定位某一模式位置,以上面的例子来说,我们定位的模式为“%(%)%”,即是从一个字符串中找到“(”和“)”两个符号对应位置范围内的字符串。其中PATINDEX('%(%)%',Test)表示找到第一对括号的位置,PATINDEX('%)%',Test)表示找到第二对括号的位置,PATINDEX('%)%',Test,2)表示找到第三对括号的位置。我们使用substring函数,来提取括号字符串及其位置运算。
提取出中间数据,可以看出这对PatIndex 和Substring函数的结合可以用来解决括号中文字符串提取的问题,十分的实用。