sql实现split函数的脚本_MsSql

复制代码 代码如下:

--创建一个函数,函数中有两个参数
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;--设置当前索引初始值为1
--当当前索引小于字符串长度时,执行循环体
WHILE(@CurrentIndex<=len(@SplitString))
BEGIN
--CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。CHARINDEX函数调用方法如下:
--CHARINDEX ( expression1 , expression2 [ , start_location ] )
-- Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。
SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
IF(@NextIndex=0 OR @NextIndex IS NULL)
SELECT @NextIndex=len(@SplitString)+1;
--函数用法:SUBSTRING ( expression, start, length )
SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);
INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);
SELECT @CurrentIndex=@NextIndex+1;
END
RETURN;
END
go
--测试函数
select * FROm dbo.SplitToTable('a,b,c,d,e,f,g', ',')

时间: 2024-10-31 08:29:22

sql实现split函数的脚本_MsSql的相关文章

sql实现split函数的脚本

复制代码 代码如下:--创建一个函数,函数中有两个参数 Create FUNCTION [dbo].[SplitToTable](@SplitString nvarchar(max),--输入的字符串@Separator nvarchar(10)=' '--分割条件)--返回的数据为一个表RETURNS @SplitStringsTable TABLE([id] int identity(1,1),[value] nvarchar(max))ASBEGINDECLARE @CurrentInde

【SQL】sql版Split函数。用于拆分字符串为单列表格

原文:[SQL]sql版Split函数.用于拆分字符串为单列表格 功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移除空格子串和重复项.市面上类似的函数不算少,但大多都是在循环中对原串进行改动,我感觉这样不好,虽然不知道sql的字符串是不是像.net的一样具有不可变性,但感觉尽量不要去动原串最好,万一sql的字串也不可变,那变一次就要产生一份,尤其是每圈循环都在变,内存消耗让人心疼,所以才有重新造个轮子的想

SQL Function 自定义函数详解_MsSql

目录 产生背景(已经有了存储过程,为什么还要使用自定义函数) 发展历史 构成 使用方法 适用范围 注意事项 疑问 内容 产生背景(已经有了存储过程,为什么还要使用自定义函数) 与存储过程的区别(存在的意义): 1.     能够在select等SQL语句中直接使用自定义函数,存储过程不行. 2.     自定义函数可以调用其他函数,也可以调用自己(递归) 3.     可以在表列和 CHECK 约束中使用自定义函数来实现特殊列或约束 4.       自定义函数不能有任何副作用.函数副作用是指对

SQl Function 创建函数实例介绍_MsSql

 在SQL中系统已为我们提供了很非常丰富的函数:例:聚会函数avg, sum,count,max,min 日期函数:Day,Month,Year等等  为我们日常开发节省很多时间  但是有一些特殊需求的话SQL 也提供自己创建函数的功能下面举一小例子:需求: 某一订单表 编号,订单号,产品名称 要知道 某一订单号的产品名称 名称之间用逗号(,)隔开 如下图: 我们创建一个标题函数: StrName 创建过程类似创建存储过程 如下: 点击右键创建 表值函数与标量函数 从名称就可以分出来  一个返回

SQL的SUBSTR()函数使用介绍_MsSql

SUBSTR函数是用来截取数据库某一列字段中的一部分. 在各个数据库的函数名称不一样(真是蛋疼,后发明的数据库难道不能同先发明的一样吗?) 复制代码 代码如下: MySQL: SUBSTR( ), SUBSTRING( ) Oracle: SUBSTR( ) SQL Server: SUBSTRING( ) ; 常用的方式是: SBUSTR(str,pos); 就是从pos开始的位置,一直截取到最后. 还有一种比较常用的是: 复制代码 代码如下: SUBSTR(str,pos,len); 这种表

SQL中object_id函数的用法_MsSql

在列出表中所有字段名的时候,用到了这样一个SQL函数:object_id 这里我将其作用与用法列出来,好让大家明白: OBJECT_ID: 返回数据库对象标识号. 语法 OBJECT_ID ( 'object' ) 参数 'object' 要使用的对象.object 的数据类型为 char 或 nchar.如果 object 的数据类型是 char,那么隐性将其转换成 nchar. 返回类型 int 注释 当该参数对系统函数可选时,则系统采用当前数据库.主机.服务器用户或数据库用户.内置函数后面

SQL中实现SPLIT函数几种方法总结(必看篇)_Mysql

例1 代码如下 create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10)) returns @temp table(a varchar(100)) --实现split功能 的函数 --date :2003-10-14 as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@Sou

几个SQL Server split自定义函数使用

例1,要求取得字符串aa,dd,cc,rr,fff中某个位置的字符串,如果在C#或Java很容易通过Split来实现,但是在Sql Server中就没有直接提供Split这个函数. 当然,此类问题总是可以解决的.  代码如下 复制代码 ALTER function [dbo].[core_split] ( @str varchar(100), @split char(1), @index int ) returns varchar(10) as begin declare @count int

SQL中实现SPLIT函数几种方法

例1  代码如下 复制代码 create function f_split(@SourceSql varchar(8000),@StrSeprate varchar(10)) returns @temp table(a varchar(100)) --实现split功能 的函数 --date    :2003-10-14 as begin     declare @i int     set @SourceSql=rtrim(ltrim(@SourceSql))     set @i=chari