A SQL Function which used to split string by char

原创 2007年09月25日 17:28:00
IF exists (SELECT * from dbo.sysobjects where id = object_id(N'[dbo].[fnSplitByDelim]'and xtype in (N'FN', N'IF', N'TF'))
drop function [dbo].[fnSplitByDelim]
GO

/**//****** Object:  UserDefinedFunction [dbo].[fnSplitByDelim]    Script Date: 05/25/2006 20:22:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[fnSplitByDelim]
(
    
@SourceString VARCHAR(max),
    
@Delim CHAR(1)
)
RETURNS @Result TABLE(SplittedValue varchar(255), Ident INT IDENTITY not null)
BEGIN

-- ============================================================================================ --
--
                                      FinTool                                                    --
--
 ============================================================================================ --

/**//***********************************************************************************
** Desc:    Function used to return the values from string with seperator
**            
**            
**            
**
**
** Note:    
**                
**
** Called By:    Stored Procedures
** 
**
** Author:   v-svarad
** Date:     Oct 1, 2006
************************************************************************************
** Change History
************************************************************************************
** Date         Author     Description
** ----------   ---------  ----------------------------------------------------------
** 10-01-2006    v-svarad   Created

**********************************************************************************
*/


    
DECLARE @Wordstart int@WordEND int@DoubleDelim varchar(2)
    
    
SET @Wordstart = 1
    
SET @WordEND = 1
    
SET @DoubleDelim = REPLICATE(@Delim2)

    
-- Prepare the data
    WHILE CHARINDEX(@DoubleDelim@SourceString> 0
        
SET @SourceString = REPLACE(@SourceString@DoubleDelim@Delim)
    
-- Left-trim it
    IF left(@SourceString1= @Delim
    
BEGIN
        
IF @Delim = ' '
            
SET @SourceString = LTRIM(@SourceString)
        
ELSE
            
SET @SourceString = SUBSTRING(
                
@SourceString,
                
PATINDEX('%[^' + @Delim + ']%'@SourceString),
                
LEN(@SourceString- PATINDEX('%[^' + @Delim + ']%'@SourceString+ 1)
    
END
    
-- Right-pad it
    IF right(@SourceString1<> @Delim
        
SET @SourceString = @SourceString + @Delim

    
WHILE @Wordstart > 0
    
BEGIN
        
-- Extract the next word
        SET @WordEND = CHARINDEX(@Delim@SourceString@Wordstart)
        
IF @WordEND > @WordStart
        
BEGIN
            
IF LEN(LTRIM(RTRIM(SUBSTRING(@SourceString@Wordstart@WordEND - @Wordstart)))) > 0
                
INSERT into @Result SELECT SUBSTRING(@SourceString@Wordstart@WordEND - @Wordstart)
            
SET @Wordstart = @WordEND + 1
        
END
        
ELSE SET @Wordstart = 0 -- Terminate the loop
    END

RETURN 
END
GO

GRANT SELECT ON DBO.[fnSplitByDelim] TO PUBLIC
GO
 

错误it is already used by statement which invoked this stored functiontrigger的解决方法

drop table if exists sequence create table sequence( seq_name varchar(50) not null, current_val i...
  • welcomelyl
  • welcomelyl
  • 2014年10月27日 14:30
  • 1138

触发器在插入时更新此条新记录 错误it is already used by statement which invoked this stored functiontrigger的解决方法

问题:create trigger InsertUser begin update users set user_power=[resource] where user_id=new.user_id;...
  • liuliu20036
  • liuliu20036
  • 2009年05月07日 21:15
  • 5211

LLVM ERROR: Program used external function '___dso_handle' which could not be resolved!的解决方案

需要在g++编译的时候加上 -fno-use-cxa-atexit 具体原因,欢迎讨论
  • lmb1612977696
  • lmb1612977696
  • 2017年08月28日 11:05
  • 333

#HDU 4747 Mex 【通过区间处理next变化统计总值】

题目: Mex Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...
  • Reskip
  • Reskip
  • 2016年04月28日 11:33
  • 472

The function equals must be used with a prefix when a default namespace is not specified

报错: The function equals must be used with a prefix when a default namespace is not specified. jsp页面...
  • zzwwjjdj1
  • zzwwjjdj1
  • 2015年11月24日 13:59
  • 1288

pointer to a function used in arithmetic

比如: #include void a(int x) { printf("test\n"); } int main(int argc, char const *argv[]) { a[0];...
  • gaokuilin1060083530
  • gaokuilin1060083530
  • 2014年10月15日 16:10
  • 720

FreeCodeCamp学习--Repeat a string repeat a string

Repeat a string repeat a string 重要的事情说3遍! 重复一个指定的字符串 num次,如果num是一个负数则返回一个空字符串。 ...
  • qq_38211541
  • qq_38211541
  • 2017年04月08日 16:42
  • 257

OCP-1Z0-053-V12.02-354题

354.Which command is used to begin a tablespace point-in-time recovery? A. Restore tablespace B. Rec...
  • rlhua
  • rlhua
  • 2013年11月12日 00:08
  • 4076

Qt错误:'(QMessageBox::Icon)1u' cannot be used as a function

程序代码如下: void MainWindow::on_commandLinkButton_clicked() { if(this->currentImage == 4) ...
  • xiayufeng520
  • xiayufeng520
  • 2012年09月05日 08:10
  • 1964

A useful function which used to split data by ',' from one column

drop FUNCTION cgns_02.f_splitstr @ CREATE FUNCTION cgns_02.f_splitstr ( srcsql varchar(3999) ) ...
  • haohaixingyun
  • haohaixingyun
  • 2016年11月23日 14:35
  • 480
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:A SQL Function which used to split string by char
举报原因:
原因补充:

(最多只允许输入30个字)