利用SQL SERVER 2008提取字段列中多个中括号里的内容?
利用SQLSERVER2008提取字段列中多个中括号里的内容,如:上海启限公司[862NUM53](2009年04日)[2765NUM5]AASSW。想要解析出的结果如下...
利用SQL SERVER 2008提取字段列中多个中括号里的内容,如:上海启限公司[862NUM53](2009年04日)[2765NUM5]AASSW。
想要解析出的结果如下:
列一 / 列二
--------------
862 / 53
2765 / 5
请问该如何实现,一定是在SQL2008中。 展开
想要解析出的结果如下:
列一 / 列二
--------------
862 / 53
2765 / 5
请问该如何实现,一定是在SQL2008中。 展开
展开全部
--你要把一行中的字段两个括号中拆成两列,这个就需要先把这个字段拆成两行。我就不在这做了,用--charindex和substring完成。
--你现在一个字段中有两个括号,每个括号中用NUM隔开两个数字,这样,我把这个字段拆--成四列 分别是 862/53/2765/5,假设你这个字段叫COLUMN
select SUBSTRING(COLUMN,CHARINDEX('[',COLUMN)+1,CHARINDEX('NUM',COLUMN)-CHARINDEX('[',COLUMN)-1) as [列1],SUBSTRING(COLUMN,CHARINDEX('NUM',COLUMN)+3,CHARINDEX(']',COLUMN)-CHARINDEX('NUM',COLUMN)-3) as [列2],SUBSTRING(COLUMN,CHARINDEX('[',COLUMN,CHARINDEX('(',COLUMN))+1,CHARINDEX('NUM',COLUMN,CHARINDEX('(',COLUMN))-CHARINDEX('[',COLUMN,CHARINDEX('(',COLUMN))-1) as [列3],SUBSTRING(COLUMN,CHARINDEX('NUM',COLUMN,CHARINDEX('(',COLUMN))+3,CHARINDEX(']',COLUMN,CHARINDEX('(',COLUMN))-CHARINDEX('NUM',COLUMN,CHARINDEX('(',COLUMN))-3) as [列4]
from table
--可能有点问题,你调试下吧
追问
我内容的括号数量是不定的哟???
追答
我这个方法可以保证第一对( ) 左右 NUM两边的数字查出来,要是你的格式基本是这样的话还行,把CHARINDEX第三个参数的起始位置放后面点。
你可以试试正则表达式 %[^0-9]% PatIndex函数 stuff函数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询