当前位置:  数据库>sqlserver

如何在T-sql 中实现数组的功能

    来源: 互联网  发布时间:2014-08-29

    本文导语:      在日常的编程过程中,数组是要经常使用到的。在利用SQL对数据库进行操作时,有时就想在SQL使用数组,比如将1,2,3,4,5拆分成数组。可惜的是在T-SQL中不支持数组。不过还是有变通的办法。我们可以自己编写两函数Get_StrArra...

    在日常的编程过程中,数组是要经常使用到的。在利用SQL对数据库进行操作时,有时就想在SQL使用数组,比如将1,2,3,4,5拆分成数组。可惜的是在T-SQL中不支持数组。不过还是有变通的办法。我们可以自己编写两函数Get_StrArrayLength(取得字符串的长度-元素的个数)和Get_StrArrayStrOfIndex(按指定符号分割字符串,返回分割后指定索引的第几个元素)。有了这两个函数,我们就可以非常方便的在T-SQL中处理形如1,2,3,4,5这样的字符串了。

     T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,处理起来有些麻烦。

下边的函数,实现了象数组一样去处理字符串。

一、按指定符号分割字符串,返回分割后的元素个数
思路:看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
 

代码如下:
CREATE function Get_StrArrayLength
(
 @str varchar(1024),  --要分割的字符串
 @split varchar(10)  --分隔符号
)
returns int
as
 begin
  declare @location int
  declare @start int
  declare @length int
  set @str=ltrim(rtrim(@str))
  set @location=charindex(@split,@str)
  set @length=1
   while @location0
     begin
      set @start=@location+1
      set @location=charindex(@split,@str,@start)
      set @length=@length+1
     end
   return @length
 end

调用示例:select dbo.Get_StrArrayLength('78,1,2,3',',')

返回值:4

二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
 

代码如下:

CREATE function Get_StrArrayStrOfIndex
(
 @str varchar(1024),  --要分割的字符串
 @split varchar(10),  --分隔符号
 @index int --取第几个元素
)
returns varchar(1024)
as
begin
 declare @location int
 declare @start int
 declare @next int
 declare @seed int
 set @str=ltrim(rtrim(@str))
 set @start=1
 set @next=1
 set @seed=len(@split)
 set @location=charindex(@split,@str)
 while @location0 and @index>@next
   begin
    set @start=@location+@seed
    set @location=charindex(@split,@str,@start)
    set @next=@next+1
   end
 if @location =0 select @location =len(@str)+1

--这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。
 return substring(@str,@start,@location-@start)
end

调用示例:select dbo.Get_StrArrayStrOfIndex('8,9,4',',',2)

返回值:9

 1 2 下一页 尾页

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 备份数据库的T-SQL语句
  • T-SQL常用的聚合函数
  • T-SQL实例 函数结果设置为列别名
  • T-SQL常用的数学函数
  • T-SQL 实现一个简单的 Split 函数
  • t-sql/mssql用命令行导入数据脚本的SQL语句示例
  • 使用T-SQL语句创建、修改、删除数据库
  • T-SQL语句创建数据库的例子(图文)
  • t-sql清空表数据的两种方式示例(truncate and delete)
  • 学习T-SQL中default值的使用
  • T-SQL学习之一 T-SQL基础
  • T-SQL常用的元数据函数
  • T-SQL实现的一个Split函数
  • T-SQL常用游标函数实例学习
  • T-SQL判断一个日期是否为今天的函数
  • 用t-sql语句完整备份数据库的例子
  • T-SQL常用的时间和日期函数
  • 使用T-SQL的Split拆分字符串的方法
  • SQLServer用t-sql命令批量删除数据库中指定表(游标循环删除)
  • SQL Server中的T-SQL的基本对象


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3