sql 分割字元

2022-03-27 12:50:23 字數 3059 閱讀 5272

-sql對字串的處理能力比較弱,比如我要迴圈遍歷象1,2,3,4,5這樣的字串,如果用陣列的話,遍歷很簡單,但是t-

sql不支援陣列,所以處理下來比較麻煩。下邊的函式,實現了象陣列一樣去處理字串。

一,用臨時表作為陣列

create

function f_split(@c

varchar(2000),@split

varchar(2

))

returns

@ttable(col varchar(20

))

asbegin

while(charindex(@split,@c)<>

0)

begin

insert

@t(col) values (substring(@c,1,charindex(@split,@c)-

1))

set@c

=stuff(@c,1,charindex(@split,@c),''

)

endinsert

@t(col) values (@c

)

return

endgo

select

*from dbo.f_split('

dfkd,dfdkdf,dfdkf,dffjk

',',

')

drop

function

f_split

col

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

dfkd

dfdkdf

dfdkf

dffjk

(所影響的行數為

4 行)

按指定符號分割字串,返回分割後指定索引的第幾個元素,象陣列一樣方便

create

function

get_strarraystrofindex

(@str

varchar(1024), --

要分割的字串

@split

varchar(10), --

分隔符號

@index

int--

取第幾個元素

)returns

varchar(1024)as

begin

declare

@location

intdeclare

@start

intdeclare

@next

intdeclare

@seed

intset

@str

=ltrim(rtrim(@str

))set

@start=1

set@next=1

set@seed

=len(@split

)set

@location

=charindex(@split,@str

)while

@location

<>

0and

@index

>

@next

begin

set@start

=@location

+@seed

set@location

=charindex(@split,@str,@start

)

set@next

=@next+1

endif

@location=0

select

@location

=len(@str)+1--

這兒存在兩種情況:1、字串不存在分隔符號 2、字串中存在分隔符號,跳出while迴圈後,@location為0,那預設為字串後邊有乙個分隔符號。

return

substring(@str,@start,@location

-@start

)end

呼叫示例:

select dbo.get_strarraystrofindex('

8,9,4

',',

',2)

返回值:

9

按指定符號分割字串,返回分割後的元素個數,方法很簡單,就是看字串中存在多少個分隔符號,然後再加一,就是要求的結果。

create

function

get_strarraylength

(@str

varchar(1024), --

要分割的字串

@split

varchar(10) --

分隔符號

)returns

intas

begin

declare

@location

intdeclare

@start

intdeclare

@length

intset

@str

=ltrim(rtrim(@str

))set

@location

=charindex(@split,@str

)set

@length=1

while

@location

<>

0begin

set@start

=@location+1

set@location

=charindex(@split,@str,@start

)

set@length

=@length+1

endreturn

@length

end呼叫示例:

select dbo.get_strarraylength('

78,1,2,3

',',

')返回值:4

SQL分割字串

t sql對字串的處理能力比較弱,比如我要迴圈遍歷象1,2,3,4,5這樣的字串,如果用陣列的話,遍歷很簡單,但是t sql不支援陣列,所以處理下來比較麻煩。下邊的函式,實現了象陣列一樣去處理字串。一,用臨時表作為陣列 create function f split c varchar 2000 s...

SQL分割字串

if object id dbo.fn split isnot null drop function dbo.fn split gocreate function dbo.fn split inputstr varchar 8000 seprator varchar 10 returns temp ...

SQL 字串分割函式

create function dbo f split sourcesql varchar 8000 strseprate varchar 10 returns temp table a varchar 100 as begin declare iint set sourcesql rtrim lt...