zoukankan      html  css  js  c++  java
  • 分割字符串存储过程

    今天有一个需求需要进行以“;”和“,”为分割符把数据分隔开,然后再插入数据库里,用存储过程实现;如字符串为:kimhillzhang,20;jinshanzhang,25,现在要以kimhillzhang  20 为一条数据插入数据库,以jinshanzhang 25为一条数据插入数据库

    name             age

    kimhillzhang    20

    jinshanzhang   25

    存储过程代码如下:

    /*
      张金山  2010-5-25
    */
    create procedure sp_SplitConent
     @string nvarchar(1000),  -- 要分隔的字符串
     @splitchar nvarchar(10) = ';', -- 以“;”为分隔字符
     @splitC  nvarchar(10)=',',  --以“,”为分隔符
     @tablename nvarchar(50),  -- 存入的表名称
     @fieldname nvarchar(50)-- 存入的字段名称
    as -- 将字符串分隔开放进表中
    declare @l int -- 第一个分隔";"字符的位置
    declare @s int -- 第二个分隔";"字符的位置
    declare @first int --第一个分隔","字符的位置
    declare @last int  --第一个分隔","字符的位置
    set @l = 0
    set @s = charindex(@splitchar, @string, @l)
    while @l <= len(@string) --判断整串的字符长度
    begin
      declare @id nvarchar(50) --用来存储以“;”分割出来的数据
      declare @value nvarchar(MAX) --用来存储以“,”分割出来的数据,注意这里得定义的足够大,以勉值被截去
      if @s = 0 set @s = len(@string) + 1 -- 如果到最后一个字符串那么第二个分隔字符的位置就是这个字符串的长度加一
      set @id = substring(@string, @l, @s - @l) -- 取值
      --实现分割“,”
      set @first = 0
      set @last=charindex(@splitC,@id,@first)
      set @value=''
      while @first <= len(@id)
      begin
        if @last = 0 set @last=len(@id) +1
        if @value = ''
        set @value = ''''+substring(@id,@first,@last-@first)+''','
        else
        set @value = @value + ''''+substring(@id,@first,@last-@first)+''','
        set @first = @last + 1
        set @last = charindex(@splitC, @id, @first) 
      end
     
      set @value = substring(@value,1,len(@value)-1) --去掉最后一个","
        declare @sql nvarchar(1000)
        set @sql = 'insert into ' + @tablename + ' ( '+ @fieldname +' )  values('+ @value +')'
        exec sp_executesql @sql
      set @l = @s + 1
      set @s = charindex(@splitchar, @string, @l) 
    end

    调用 :exec sp_SplitConent 'kimhillzhang,20;jinshanzhang,25',';',',','T_User','username,userage'

  • 相关阅读:
    栈和队列的概念
    01-开始使用django(全、简)
    临时记录01
    centos删除乱码名称的文件
    《计算机网络》谢希仁(第7版) 第一章
    git提交到远程虚拟机
    安全篇:弱密码python检测工具
    正向代理、Nginx(反向代理、负载均衡、静态资源服务器)
    列表去重、去除满足一定条件的元素
    editplus的常用快捷键
  • 原文地址:https://www.cnblogs.com/KimhillZhang/p/1743597.html
Copyright © 2011-2022 走看看