--建乙個表
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...