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'

实现的结果为在SQL SERVER中根据某字段分隔符将记录分成多条记录-LMLPHP

(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)

05-11 11:09