MSSQL 自定义函数实现类似于 split 方法,返回表
2015-06-11 16:29
501 查看
这个函数的功能就是把一个字符串(按照特定的分隔符连接起来形成的字符串),按照指定的分隔符分割形成N个记录并插入一个临时表
============================================= -- Author: <CMO> -- Create date: <2015-04-28> -- Description: 实现类似于 split 方法,返回表 --使用方法: --select * from [SplitToTable]('1111;2222;3333',';') --返回 --id | value --1 | 1111 --2 | 2222 --3 | 3333 -- ============================================= Create FUNCTION [dbo].[SplitToTable] ( @SplitString nvarchar(max), @Separator nvarchar(10)=' ' ) RETURNS @SplitStringsTable TABLE ( [id] int identity(1,1), [value] nvarchar(max) ) AS BEGIN DECLARE @CurrentIndex int; DECLARE @NextIndex int; DECLARE @ReturnText nvarchar(max); SELECT @CurrentIndex=1; WHILE(@CurrentIndex<=len(@SplitString)) BEGIN SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);//CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置 IF(@NextIndex=0 OR @NextIndex IS NULL) SELECT @NextIndex=len(@SplitString)+1; SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex); INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText); SELECT @CurrentIndex=@NextIndex+1; END RETURN; END
相关文章推荐
- 不安装Oracle客户端也能使用PL/SQL
- 【oracle】EM打不开的问题
- 配置 MySQL max_allowed_packet
- Excel 中使用SQL 语句查询数据(七)-----用LIKE 运算符进行模糊匹配查询
- MS SQLService中的*= 及 =*
- Redis内存管理
- 键值存储【KV存储】
- mysql获取插入后ID
- sql server 时间转换格式
- C#连接SQLite数据库方法
- Linux 下Oracle 无法DBCA的问题。
- linux下安装redis及PHP扩展应用
- mysql版本选择
- SQL 查找表名 字段名
- Xtrabackup+Rsync 备份数据库并同步到远端备份机 推荐
- memcached 之 哈希一致性 和 虚拟节点 分析
- 试用Redis
- mysql 异常
- Redis数据库-键的生存时间与过期时间的区别
- SQL 中条件、循环语句的应用整理