SQL中实现SPLIT函数几种方法总结

SQL中实现SPLIT函数几种方法总结

例1

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

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,@SourceSql)

while @i>=1

begin

insert @ temp values ( left (@SourceSql,@i-1))

set @SourceSql= substring (@SourceSql,@i+1,len(@SourceSql)[email protected])

set @i=charindex(@StrSeprate,@SourceSql)

end

if @SourceSql<> ‘‘

insert @ temp values (@SourceSql)

return

end

select * from dbo.f_split( ‘1,2,3,4‘ , ‘,‘ )

a

--------------------

1

2

3

4

(所影响的行数为 4 行)

例2

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

--SQL Server Split函数

--Author:zc_0101

--说明:

--支持分割符多字节

--使用方法

--Select * FROM DBO.F_SQLSERVER_SPLIT(‘1203401230105045‘,‘0‘)

--select * from DBO.F_SQLSERVER_SPLIT(‘abc1234a12348991234‘,‘1234‘)

--Select * from DBO.F_SQLSERVER_SPLIT(‘ABC‘,‘,‘)

CREATE FUNCTION F_SQLSERVER_SPLIT(@Long_str varchar (8000),@split_str varchar (100))

RETURNS @tmp TABLE (

ID inT IDENTITY PRIMARY KEY ,

short_str varchar (8000)

)

AS

BEGIN

DECLARE @long_str_Tmp varchar (8000),@short_str varchar (8000),@split_str_length int

SET @split_str_length = LEN(@split_str)

IF CHARINDEX(@split_str,@Long_str)=1

SET @long_str_Tmp= SUBSTRING (@Long_str,@split_str_length+1,LEN(@Long_str)[email protected]_str_length)

ELSE

SET @[email protected]_str

IF CHARINDEX(REVERSE(@split_str),REVERSE(@long_str_Tmp))>1

SET @[email protected][email protected]_str

ELSE

SET @[email protected]_str_Tmp

IF CHARINDEX(@split_str,@long_str_Tmp)=0

Insert INTO @tmp select @long_str_Tmp

ELSE

BEGIN

WHILE CHARINDEX(@spl(www.jb51.net)it_str,@long_str_Tmp)>0

BEGIN

SET @short_str= SUBSTRING (@long_str_Tmp,1,CHARINDEX(@split_str,@long_str_Tmp)-1)

DECLARE @long_str_Tmp_LEN INT ,@split_str_Position_END int

SET @long_str_Tmp_LEN = LEN(@long_str_Tmp)

SET @split_str_Position_END = LEN(@short_str)[email protected]_str_length

SET @long_str_Tmp=REVERSE( SUBSTRING (REVERSE(@long_str_Tmp),1,@[email protected]_str_Position_END))

IF @short_str<> ‘‘ Insert INTO @tmp select @short_str

END

END

RETURN

END

例3

Sql2000andSql2005实用的Split函数

代码如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

sql2000

CREATE FUNCTION [dbo].[splitstring_array]

(

@string nvarchar(4000),@split char (1)

)

RETURNS @array table

(

oneStr nvarchar(100)

)

AS

BEGIN

declare @v_code varchar (60)

--zell 2006-05-26

--set @string = replace(@string,‘ ‘,@split)

--set @string = replace(@string,‘,‘,@split)

while len(@string) > 0

begin

if charindex(@split,@string,1) != 0

begin

set @v_code = substring (@string,1,charindex(@split,@string,1)-1)

set @string = substring (@string,charindex(@split,@string,1)+1,len(@string))

end

else if charindex(@split,@string,1) = 0

begin

set @v_code = @string

set @string = ‘‘

end

insert into @array(onestr) values (@v_code)

end

RETURN

END

sql2005

CREATE function [dbo].[func_splitid]

(@str varchar ( max ),@split varchar (10))

RETURNS @t Table (c1 nvarchar(100))

AS

BEGIN

DECLARE @x XML

SET @x = CONVERT (XML, ‘<items><item /><item /></items>‘ )

INSERT INTO @t SELECT x.item.value( ‘@id[1]‘ , ‘nvarchar(100)‘ ) FROM @x.nodes( ‘//items/item‘ ) AS x(item)

RETURN

END

以上这篇SQL中实现SPLIT函数几种方法总结

推荐阅读

    excel怎么用乘法函数

    excel怎么用乘法函数,乘法,函数,哪个,excel乘法函数怎么用?1、首先用鼠标选中要计算的单元格。2、然后选中单元格后点击左上方工具栏的fx公

    优化PostgreSQL中的批量更新性能

    优化PostgreSQL中的批量更新性能,数据,表格,在Ubuntu 12.04上使用PG 9.1. 我们目前需要24小时才能运行大量UPDATE数据库上的语句,其形式

    excel中乘法函数是什么?

    excel中乘法函数是什么?,乘法,函数,什么,打开表格,在C1单元格中输入“=A1*B1”乘法公式。以此类推到多个单元。1、A1*B1=C1的Excel乘法公式

    标准差excel用什么函数?

    标准差excel用什么函数?,函数,标准,什么,在数据单元格的下方输入l标准差公式函数公式“=STDEVPA(C2:C6)”。按下回车,求出标准公差值。详细

    程式编辑快捷键|代码编辑快捷键

    程式编辑快捷键|代码编辑快捷键,,1. 代码编辑快捷键Option Explicit ‘强制对模块内所有变量进行声明(2) Option Base 1 ‘指定数组的第一

    vivo网络设置代码|vivo功能代码

    vivo网络设置代码|vivo功能代码,,1. vivo功能代码代码是*#558#1.首先在手机桌面里找到电话。2.在拨号键盘里输入*#558#3.这时候就进入了手

    mac怎么安装mysql| macbook怎么下载mysql

    mac怎么安装mysql| macbook怎么下载mysql,标签,学习python 不得不学习的就是数据库,那么在开始学习数据库之前,那么今天我们先说下怎么安装m