SQL2000 2005字串拆分為列表通用函式

2021-05-22 09:28:45 字數 2924 閱讀 5525

--sql2000/2005

字串拆分為列表通用函式 if

object_id

('f_getstr')is

notnull

drop

function

f_getstrgo

create

function

f_getstr(@s

nvarchar

(4000),

--待分拆的字串

@flag

nvarchar

(10)=

''--

資料分隔符 )

returns

@rtable

(col

nvarchar

(1000))as

begin if

isnull

(@flag,''

)=''

andlen

(isnull

(@flag,''

)+'a'

)=1

insert

@rselect

substring(@s

,number

+1,1)

from

master

..spt_values

where

type

='p'

andnumber

<

len(@s+

'a')-1

else

insert

@rselect

substring(@s

,number

,charindex

(@flag,@s

+@flag

,number

)-number

)from

master

..spt_values

where

type

='p'

andnumber

<=

len(@s+

'a')

--and substring(@flag+@s,number,1)=@flag --

用此條件或下面的條件均可

andcharindex

(@flag

,@flag+@s

,number

)=number

return

end go

--本例項技巧,利用

master

庫自帶的

spt_values

表,取number

字段作為連續的序號, --

省去建立序號表,盡量做到通用,再加上字串處理函式取得最終結果。

--1.

每個字元拆分取出

select

*from

dbo.

f_getstr(n'

乙個世界乙個家

',null)

select

*from

dbo.

f_getstr(n'

乙個世界乙個家',

'')select

*from

dbo.

f_getstr(n'

乙個世界乙個家',

default)

/* col

------- 一

個 世界 一

個 家(7 行受影響)

*/ --2.

指定分隔符拆分取出

select

*from

dbo.

f_getstr(n'

乙個世界乙個家',

n' ')

select

*from

dbo.

f_getstr(n'

乙個,世界,

乙個,家'

,n',')

select

*from

dbo.

f_getstr(n'

乙個%世界%

乙個%家'

,n'%')

select

*from

dbo.

f_getstr(n'

乙個中國世界中國乙個中國家',

n'中國')

/*col

--------- 乙個

世界 乙個

家 (4 行受影響)

*/

--3.sql2005

以上版本可以結合

進行拆分列值 if

object_id

('tb')is

notnull

drop

table

tbgo

create

tabletb(

idint

,col

varchar

(30))

insert

into

tbvalues

(1,'aa,bb'

)insert

into

tbvalues

(2,'aaa,bbb,ccc')go

selectid,

b.colfrom

tbcross

f_getstr

(col

,',')b

selectid,

b.colfrom

tbouter

f_getstr

(col

,',')b

/* idcol

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

1aa1bb

2aaa

2bbb

2ccc

(5 行受影響)

SQL2008 字串函式

1.字串函式 函式 名稱 引數 示例 說明 ascii 字串表示式 select ascii abc 返回 97 返回字串中最左側的字元的ascii 碼。char 整數表示式 select char 100 返回 d 把ascii 碼轉換為字元。介於0 和 255 之間的整數。如果該整數表示式不在此...

字串1 字串的旋轉

題目描述 給定乙個字串,要求將字串前面的若干個字元移到字串的尾部。例如 將字串 abcdef 的前三個字元 a b c 移到字串的尾部,那麼原字串將變成 defabc 首先想到的是將需要移動的字元乙個乙個移到字串的尾部。實現如下 public class transfet s n 1 t publi...

字串(一) 字串Hash

今天開一手最不 tao 擅 yan 長的字串演算法 字串hash演算法。似乎提到字串的話,kmp應該是更為常見的一種,但是hash有它的優點,被犇們稱為 優雅的暴力 何謂hash?hash的中文稱為雜湊,這當然是音譯,直譯過來就是雜湊,或者也有叫預對映的。雜湊的作用就是通過某個特殊函式的對映,將任意...