SQL2005學習筆記 APPLY 運算子

2021-04-30 23:36:56 字數 3034 閱讀 7265

--建乙個表

create

table

mydata

(ids 

intidentity

primary

key,

data 

nvarchar

(1000) )

go--

插入測試資料

insert

into

mydata 

values(''

)insert

into

mydata 

values('

a,b,c')

insert

into

mydata 

values('

q')insert

into

mydata 

values('

i,p')go

select

*from

mydata

go--

查詢結果

ids    data12

a,b,c3q

4i,p

建立乙個表,作用是:按逗號分解字元,分解出的每乙個字元做一行資料返回

create

function

fun_mydata(

@data

asnvarchar

(1000

))  

returns

@tem

table

( id 

int, value 

nvarchar

(100

) )as

begin

select

@data

=isnull

(@data,''

)iflen(

@data)=

0return

--字元長度為0 ,退出

declare

@idas

intselect

@id=

1declare

@end

asint

select

@end

=charindex('

,', @data

)while

(@end

>0)

begin

insert

into

@tem

(id,value)

select

@id,

left

(@data

,@end-1

)select

@id=

@id+

1select

@data

=right

(@data

,len

(@data)-

@end

)select

@end

=charindex('

,', @data

)end

iflen

(@data

)>

0begin

insert

into

@tem

(id,value)

select

@id,

@data

endreturn

end

select

m.ids, f.

*from

mydata m 

cross

go--

結果ids    id    value21

a22b

23c3

1q41

i42p

select

m.ids, f.

*from

mydata m 

outer

go--

結果ids    id    value

1null

null21

a22b

23c3

1q41

i42p

以上是sql2005的解決方案,下面我演示一下sql2000怎麼解決這樣的查詢:

思路是:做個迴圈來逐個鏈結查詢。

--sql2000版本

declare

@ids

intselect

@ids=0

declare

@data

nvarchar

(200

)select

@data=''

--定義表變數臨時存放資料

declare

@tem

table

(ids 

int,

id int

,value 

nvarchar

(100))

declare

test_cursor 

cursor

forselect

ids, data 

from

mydata

open

test_cursor

fetch

next

from

test_cursor 

into

@ids

,@data

while

@@fetch_status=0

begin

insert

into

@tem

select

@ids

,id,value

from

dbo.fun_mydata(

@data

)fetch

next

from

test_cursor 

into

@ids

,@data

endclose

test_cursor

deallocate

test_cursor

select

*from

@tem

SQL2005 學習筆記 視窗函式 OVER

1.簡介 sql server 2005中的視窗函式幫助你迅速檢視不同級別的聚合,通過它可以非常方便地累計總數 移動平均值 以及執行其它計算。視窗函式功能非常強大,使用起來也十分容易。可以使用這個技巧立即得到大量統計值。視窗是使用者指定的一組行。開窗函式計算從視窗派生的結果集中各行的值。2.適用範圍...

SQL2005乾淨解除安裝

昨天解除安裝安裝sql2005,安裝顯示成功之後可是就是沒有進入sql的檔案,只有配置工具,於是就解除安裝了,這下可好,解除安裝沒卸乾淨,又重新安裝,這次不僅顯示上一次已經安裝的檔案已經安裝安裝完成,還顯示只有配置工具,反覆弄了好幾次還是不成功,今天起來又開始我的安裝歷程,我先決定把該解除安裝的解除...

SQL2005 索引設計

1 評估索引本身的占用空間,當索引相對於其資料本身過大可能會無明顯作用。這種情況體現在 表很小,索引列過多,索引碎片過多。當索引在select中不起作用時,你還必須在insert和update delete這些操作中去維護這些不起作用的資料。2 in語句不一定不能使用索引,where id in 1...