`
feiliboos
  • 浏览: 667232 次
文章分类
社区版块
存档分类
最新评论

T-SQL 定义分割字符串的函数

 
阅读更多

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

CREATEfunctionGet_StrArrayLength

(

@strvarchar(1024),--要分割的字符串

@splitvarchar(10)--分隔符号

)

returnsint

as

begin

declare@locationint

declare@startint

declare@lengthint

set@str=ltrim(rtrim(@str))

set@location=charindex(@split,@str)

set@length=1

while@location<>0

begin

set@start=@location+1

set@location=charindex(@split,@str,@start)

set@length=@length+1

end

return@length

end

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

返回值:4

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

CREATEfunctionGet_StrArrayStrOfIndex

(

@strvarchar(1024),--要分割的字符串

@splitvarchar(10),--分隔符号

@indexint--取第几个元素

)

returnsvarchar(1024)

as

begin

declare@locationint

declare@startint

declare@nextint

declare@seedint

set@str=ltrim(rtrim(@str))

set@start=1

set@next=1

set@seed=len(@split)

set@location=charindex(@split,@str)

while@location<>0and@index>@next

begin

set@start=@location+@seed

set@location=charindex(@split,@str,@start)

set@next=@next+1

end

if@location=0select@location=len(@str)+1

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

returnsubstring(@str,@start,@location-@start)

end

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

返回值:9

三、结合上边两个函数,象数组一样遍历字符串中的元素

createfunctionf_splitstr(@SourceSqlvarchar(8000),@StrSepratevarchar(100))

returns@temptable(F1varchar(100))

as

begin

declare@chasvarchar(100)

set@SourceSql=@SourceSql+@StrSeprate

while(@SourceSql<>'')

begin

set@ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)

insert@tempvalues(@ch)

set@SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')

end

return

end

----调用

select*fromdbo.f_splitstr('1,2,3,4',',')

--结果:

1

2

3

4

分享到:
评论

相关推荐

    SQL Server字符串切割函数

    创建用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过 EXECUTE ...

    字符串分割成数组函数(plsql function)

    将字符串分割成数组: 例如将字符串“7369,7499,7521,7844"分割成 7369 7499 7521 7844 用法:可以将分割结果做为一个数组或者数据库表列来使用 select * from scott.emp where empno in (select column_value from...

    sqlserver自定义函数

    --按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。 Create function Get_StrArrayLength ( @str varchar(1024), --要分割的字符串 @...

    SQL Server 自定义字符串分割函数

    一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,是看字符串中存在多少个分隔符号,然后再加一,是要求的结果(标量值函数) 1 create function Func_StrArrayLength 2 ( 3 @str varchar(1024),...

    Eval-SQL.NET:SQL Eval函数使用C#语法在SQL Server中动态评估表达式

    在SQL中使用分隔符分割字符串的基准 方法 1,000行 10,000行 100,000行 1,000,000行 Eval-SQL.NET 4毫秒 13毫秒 160毫秒 1,650毫秒 fn_split(TVF) 100毫秒 625毫秒 5,500毫秒 55,000毫秒 下载 *本月解锁的PRO...

    Transact-SQL编程规范

    2.16. Unicode字符串 13 2.17. BEGIN...END 块 14 2.18. TRY块 14 2.19. TOP子句 15 2.20. TRANSACTION编写 15 2.21. 存储过程 16 3.代码注释 16 3.1.代码头部注释 16 3.2.TRANSACTION注释 17 附录A 命名规则 18 4.1...

    SQLServer2008查询性能优化 2/2

    9.8.4 实现准备/执行模式以避免重传查询字符串 253 9.8.5 避免即席查询 253 9.8.6 对于动态查询sp_executesql优于EXECUTE 253 9.8.7 小心地参数化查询的可变部分 254 9.8.8 不要允许查询中对象的隐含解析 254 ...

    SQLServer2008查询性能优化 1/2

    9.8.4 实现准备/执行模式以避免重传查询字符串 253 9.8.5 避免即席查询 253 9.8.6 对于动态查询sp_executesql优于EXECUTE 253 9.8.7 小心地参数化查询的可变部分 254 9.8.8 不要允许查询中对象的隐含解析 254 ...

    PHP和MySQL Web开发第4版pdf以及源码

    4.3 用字符串函数连接和分割字符串 4.3.1 使用函数explode()、implode()和join() 4.3.2 使用strtok()函数 4.3.3 使用substr()函数 4.4 字符串的比较 4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() ...

    PHP和MySQL WEB开发(第4版)

    4.3 用字符串函数连接和分割字符串 4.3.1 使用函数explode()、implode()和join() 4.3.2 使用strtok()函数 4.3.3 使用substr()函数 4.4 字符串的比较 4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() 4.4.2...

    PHP和MySQL Web开发第4版

    4.3 用字符串函数连接和分割字符串 4.3.1 使用函数explode()、implode()和join() 4.3.2 使用strtok()函数 4.3.3 使用substr()函数 4.4 字符串的比较 4.4.1 字符串的排序:strcmp()、strcasecmp()和strnatcmp() ...

    delphi 开发经验技巧宝典源码

    0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期时间格式化为指定格式 122 0188 计算两个...

    delphi 开发经验技巧宝典源码06

    0183 指定符号分割字符串 119 0184 如何使用随机密码和字符串 120 第6章 日期和时间 121 0185 获得系统当前时间 122 0186 获得系统当前日期 122 0187 将日期时间格式化为指定格式 122 0188 计算两个...

    Python核心编程第二版(ok)

     6.5.3 字符串类型函数   6.6 字符串内建函数   6.7 字符串的独特特性   6.7.1 特殊字符串和控制字符   6.7.2 三引号   6.7.3 字符串不变性   6.8 Unicode   6.8.1 术语   6.8.2 什么是...

    Python核心编程第二版

     6.5.3 字符串类型函数   6.6 字符串内建函数   6.7 字符串的独特特性   6.7.1 特殊字符串和控制字符   6.7.2 三引号   6.7.3 字符串不变性   6.8 Unicode   6.8.1 术语   6.8.2 什么是...

    php网络开发完全手册

    7.5.7 用正则表达式进行字符串分割 7.5.7 ——preg_split 115 7.6 字符操作的注意事项 117 7.7 小结 118 第8章 数组操作与数据结构算法 119 8.1 一维数组与多维数组 119 8.1.1 一维数组简介 119 8.1.2 多维数组简介 ...

    PBhelper/PBCOMMENT 支持PB11.5,带源码,说明书等,版权归李群巍所有

    新增自动删除每行代码前面和后面以某个字符串为标记,在此 标记之前和之后的代码语句,类似于 Trim, LeftTrim, RightTrim 5.5 新增 PBDataWindow.exe,处理从 PBL 里选择 DataWindow 自动 生成和结构体、变量,...

Global site tag (gtag.js) - Google Analytics