zoukankan      html  css  js  c++  java
  • SQL实现数组的功能

    今天在工作遇到了一个问题,需要往表中添加数量不小而且没有规律的的数据。思考后我想到了使用高级语言中的数组功能解决。

    由于SQL Server并没有数组类型,ANSI SQL-92标准中并没有任何有关数组方面的定义。要实现其他高级语言中的数组功能,我们必须使用一些特殊的处理方法,其中包括特殊设计的字符参数、临时表、XML等。

    我想到的是用特殊字符分割提取的方法:

    用VARCHAR数据类型来模拟一个数组,数组中元素用逗号隔开,接着通过WHILE循环使用CHARINDEX以及SUBSTRING函数来提取其中的元素。
    实例代码如下:

     1 create proc insertUsers_of_array (@Namelist varchar(1000))
     2 
     3 as
     4 
     5 declare @ix int,@pos int,@str varchar(1000)
     6 
     7 set @pos=1
     8 
     9 set @ix=1
    10 
    11 while @ix>0
    12 
    13 begin
    14 
    15 set @ix=charindex(',',@List,@pos)
    16 
    17 if @ix>0
    18 
    19 set @str=substring(@list,@pos,@ix-@pos)
    20 
    21 else
    22 
    23 set @str=substring(@list,@pos,len(@list))
    24 
    25 set @str=ltrim(rtrim(@str))
    26 
    27 insertinto [dbo].[userlist] values(@str,1,'Xiaoming',GETDATE(),'Xiaoming',GETDATE())
    28 
    29 set @pos=@ix+1
    30 
    31 end

      

    该示例代码可以插入没有规律的名字的数据集,调用方式为: 

     exec insertUsers_of_array@list='Mi,Meizu,Oppo,Huawei,ZTZ,PPK'

    结果如下:

     

  • 相关阅读:
    ES6学习笔记(五)函数的扩展
    ES6学习笔记(四)数值的扩展
    ES6学习笔记(二)变量的解构与赋值
    ES6学习笔记(一)新的变量定义命令let和const
    JS对象继承与原型链
    JS构造函数、对象工厂、原型模式
    获取地图的坐标
    大屏页面
    如何更新git?
    ES6——多个箭头函数
  • 原文地址:https://www.cnblogs.com/theseven/p/4360382.html
Copyright © 2011-2022 走看看