MS SQL拆分逗号并检索字段

   create  table  curtest  (djbh  varchar (20), primary 关键,sales  varchar (20))   去   insert  curt   select “A1”、“01、02、03”, union  all ,,,,,,,,,,,创建表并插入记录   select “A2”、“01、02”, union 所有   select  A3, ' 02、03, union 所有   select ‘A4’,‘02、03、04’,,   去      declare  cur_test  cursor  for  select  *,得到curtest ,,,——声明游标   declare  @djbh  varchar(20),,,,,,,,,,,,,,,,,,,,,,,,,,,,,定义变量单据编的号   declare  @sales  varchar(20),,,,,,,,,,,,,,,,,,,,,,,,,,,,,定义变量销售   @len  declare  @star  int, int, @dhwz  int ,,,,,,,,,,,,,,,,,定义变量开始,长度,逗号位置   open  cur_test ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,打开游标   fetch  next 得到cur_test  into  @djbh, @sales ,,,,,,,,,,,,获取第一条记录   而(@@FETCH_STATUS=0),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,根据返回状态确认执行结果0代表成功   开始   set  @star=1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,对开始位置赋值1   set  @dhwz=CHARINDEX (', ', @sales @star),,,,,,,,,,,,,,,,,获取第一个逗号位置   set  @len=LEN (@sales),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,获取字段长度   而(@star<=@LEN),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,循环条件,开始位置小于字段长度   begin ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,   select  @djbh substring (@sales、@star @dhwz -@star),,,,,,,,,获取逗号前字符,   set  @star=@dhwz + 1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,每次循环,将上次逗号位置+ 1作为下次开始位置   set  @dhwz=CHARINDEX (', ', @sales @star),,,,,,,,,,,,,,,,,,,,以上次逗号位置+ 1作为本次开始位置,检索下一个逗号位置   如果(@dhwz=0),,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,判断,当检索不到逗号(即返回值为0,并且已到达最后一个逗号)   开始   select  @djbh SUBSTRING (@sales、@star (@len -@star) + 1),,,,,,最后一个逗号后字符,以上一次逗号位置+ 1开始,长度为字段总长度减开始位置+ 1   break ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,跳出循环,,,,   最终获得,,,   结束   fetch  next 得到cur_test  into  @djbh, @sales ,,,,,,,,,,,,,,读取下一条记录,并重新开始执行循环(拆分并检索逗号分割字符)   结束   close  cur_test

 MS SQL拆分逗号并检索字段

 MS SQL拆分逗号并检索字段






MS SQL拆分逗号并检索字段