離家不遠

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

XT_RSGL_KQSZ_LS表结构如下图:

CREATE TABLE  XT_RSGL_KQSZ_LS(

  KQFW VARCHAR(400)

)

其中KQFW字段以分割符 , 隔开

INSERT INTO XT_RSGL_KQSZ_LS SELECT 'AAA,BBBB,C' UNION SELECT '12,3'

实现的结果为

 (number为前分隔符的下标值的后一位)

select

substring(a.kqfw , b.number , charindex(',',a.kqfw+',',b.number)-b.number)as result,

a.* from XT_RSGL_KQSZ_LS a join master..spt_values b on b.type='P'

where b.number=charindex(',',','+a.kqfw,b.number)

 

思路:就是找到前、后分隔符在KQFW字段的下标值

利用一个自然数自增的表(sqlserver自带的master..spt_values的number字段从0自增)

*charindex( expression1 , expression2 [ , start_location ] ) 对第三个参数比较陌生,就是从start_location开始对expression2进行匹配expression1

*substring(str, pos, len)

 

posted on 2016-12-23 16:16  離家不遠  阅读(620)  评论(0编辑  收藏  举报