您的位置:首页 > 数据库

SQL脚本整理系列一 分隔函数

2015-04-07 15:26 316 查看

原来效果:

fName    Scroe
王某某    101,102,109
李某某    102,103
王某某    103
李某某
李某某    101,102,103
王某某    222
执行后效果:
name    score
李某某    101
李某某    102
李某某    103
王某某    101
王某某    102
王某某    103
王某某    109
王某某    222
--基础数据表创建
IF OBJECT_ID('sp_SplitResult') > 0
DROP PROC sp_SplitResult
GO

CREATE  PROC sp_SplitResult
AS
BEGIN
--声明一个表
SET   NOCOUNT ON
DECLARE @tb TABLE
(
name VARCHAR(20) ,
score VARCHAR(10)
)
DECLARE @name VARCHAR(20)= '' ,
@SourceObject VARCHAR(MAX)

--创建游标
DECLARE cursor_tb CURSOR FAST_FORWARD
FOR
( SELECT    fName ,
Scroe
FROM      dbo.Test1
WHERE     Scroe <> ''
)
OPEN  cursor_tb
FETCH NEXT FROM cursor_tb
INTO @name, @SourceObject;

WHILE @@FETCH_STATUS = 0
BEGIN
INSERT  @tb
SELECT  @name ,
score
FROM    dbo.getSplitResult(@SourceObject, ',')
FETCH NEXT FROM cursor_tb
INTO @name, @SourceObject

END

CLOSE cursor_tb
DEALLOCATE cursor_tb

SELECT DISTINCT
*
FROM    @tb
END

--  EXEC sp_SplitResult
View Code
--执行结果
EXEC sp_SplitResult

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: