分割字符串表值函数

实际工作中,我们通常会有这样的业务场景,需要把一大串字符串,用某个特定的字符串分割出来,生成一张表。一下方法就很好的解决了这个问题。

 1 IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID(‘fn_Split‘) AND XTYPE=‘FN‘)
 2 BEGIN
 3     DROP FUNCTION dbo.fn_Split
 4 END
 5 GO
 6 --功    能:分割字符串表值函数
 7 --参    数:@String 分割的字符串
 8 --          @Delimiter 分隔符
 9 --返 回 值:表
10 --创 建 人:maojw
11 --创建时间:2014-09-24
12 CREATE FUNCTION [dbo].[fn_Split](
13  @String nvarchar (max),
14  @Delimiter nvarchar (10)
15 )
16 RETURNS @ValueTable TABLE ([Value] NVARCHAR(MAX),[id] int)
17 BEGIN
18  DECLARE @NextString nvarchar(MAX),
19   @Pos int,
20   @NextPos int,
21   @CommaCheck nvarchar(1),
22     @id int
23
24 set @id=1
25
26  SET @NextString = ‘‘
27  SET @CommaCheck = right(@String,1)
28
29  SET  @String = @String + @Delimiter
30
31   SET @Pos = CHARINDEX(@Delimiter,@String)
32   SET @NextPos = 1
33
34  WHILE (@pos <>  0)
35  BEGIN
36   SET @NextString = SUBSTRING(@String,1,@Pos - 1)
37
38   INSERT INTO @ValueTable ( [Value],[id]) VALUES (@NextString,@id)
39
40   SET @String = SUBSTRING(@String,@pos +1,LEN(@String))
41
42   SET @NextPos = @Pos
43   SET @pos  = CHARINDEX(@Delimiter,@String)
44
45     set @id = @id +1
46  END
47
48  RETURN
49 END
50 GO

时间: 2024-11-03 01:21:16

分割字符串表值函数的相关文章

分割 字符串的函数AfxExtractSubString(CString&amp; rString, LPCTSTR lpszFullString,int iSubString, TCHAR chSep = &#39;/n&#39;)

今天无意在网上看到了一个比较不常用的MFC分割 字符串的函数AfxExtractSubString(CString& rString, LPCTSTR lpszFullString,int iSubString, TCHAR chSep = '/n'),下面大概说一下它的用法: 参数说明: rString 得到的字符串:lpszFullString 待分割的字符串:iSubString 要得到第几个字符串:chSep 个子串之间的分隔符 例如,有一个字符串strFullString = "

一个分割字符串的函数

一个分割字符串的自定义函数,主要是了解思路,留着以后备用. --======================================== --Desc:<字符串的分割> --Blog:<奔跑的金鱼> --Date:<2016-01-07> --======================================== CREATE FUNCTION dbo.f_splitstr ( @str varchar(8000) ) RETURNS @r TABLE

php分割字符串

php分割字符串的函数 1,substr $str1 = substr($str,5); echo "从第5个字符开始取至最后:".$str1."; $str2 = substr($str,9,4); echo "从第9个字符开始取4个字符:".$str2."; $str3 = substr($str,-5); echo "取倒数5个字符:".$str3."; $str4 = substr($str,-8,4); e

SQL Server分割字符串

下面是创建了以","分割字符串的函数:  create   function   f_splitstr(@SourceSql   varchar(8000),@StrSeprate   varchar(100))      returns   @temp    table(F1   varchar(100))      as        begin      declare   @ch    as   varchar(100)      set   @[email protected

PCB MS SQL表值函数与CLR 表值函数 (例:字符串分割转表)

将字符串分割为表表经常用到,这里 SQL表值函数与CLR  表值函数,两种实现方法例出来如下: SELECT * FROM FP_EMSDB_PUB.dbo.SqlSplit('/','1oz/1.5oz/2oz/3oz') 效果如下: SQL实现表值函数 CREATE FUNCTION [dbo].[splitStr]( @s varchar(max), --待分拆的字符串 @split varchar(10) --数据分隔符 )RETURNS @re TABLE(id int IDENTIT

在数据库中使用表值函数分割字符串

新建表值函数: Create function [dbo].[f_split](@SourceSql varchar(8000),@StrSeprate varchar(10)) returns @temp table(a varchar(100)) as begin declare @i int set @SourceSql=rtrim(ltrim(@SourceSql)) set @i=charindex(@StrSeprate,@SourceSql) while @i>=1 begin i

C语言分割字符串函数strtok

在编程过程中,有时需要对字符串进行分割.而有效使用这些字符串分隔函数将会给我们带来很多的便利. 下面我将在MSDN中学到的strtok函数做如下翻译. strtok :在一个字符串查找下一个符号 char *strtok( char *strToken, const char *strDelimit ); 返回值:返回指向在strToken字符串找到的下一个符号的指针,当在字符串找不到符号时,将返回NULL.每 次调用都通过用NULL字符替代在strToken字符串遇到的分隔符来修改strTok

模拟java的split函数,分割字符串,类似于java的split方法

/*自定义oracle的分割函数*//*定义一个type,用户接收返回的数据集合*/create or replace type splitType as table of varchar2(4000); /* 参数1: 被分割的字符串 参数2:分割字符串,默认是英文逗号*/create or replace function split_str(str varchar2, split_char varchar2:=',') return splitType pipelinedis idx nu

sql 表值函数-将一个传入的字符串用2中分隔符拆分成临时表

USE [tms]GO/****** Object: UserDefinedFunction [dbo].[fn_StrToTable_Double] Script Date: 2017/4/26 9:07:38 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: HXQ-- Create date: 2016年8月9日18:0