sql字符操作 split

来源:互联网 发布:2017大学生贷款软件 编辑:程序博客网 时间:2024/06/05 06:29
ALTER FUNCTION [dbo].[Split](@String nvarchar(4000), @Delimiter char(1))RETURNS @Results TABLE (Items nvarchar(4000))ASBEGINDECLARE @INDEX INTDECLARE @SLICE nvarchar(4000)-- HAVE TO SET TO 1 SO IT DOESNT EQUAL Z--     ERO FIRST TIME IN LOOPSELECT @INDEX = 1WHILE @INDEX !=0BEGIN-- GET THE INDEX OF THE FIRST OCCURENCE OF THE SPLIT CHARACTERSELECT @INDEX = CHARINDEX(@Delimiter,@STRING)-- NOW PUSH EVERYTHING TO THE LEFT OF IT INTO THE SLICE VARIABLEIF @INDEX !=0SELECT @SLICE = LEFT(@STRING,@INDEX - 1)ELSESELECT @SLICE = @STRING-- PUT THE ITEM INTO THE RESULTS SETINSERT INTO @Results(Items) VALUES(@SLICE)-- CHOP THE ITEM REMOVED OFF THE MAIN STRINGSELECT @STRING = RIGHT(@STRING,LEN(@STRING) - @INDEX)-- BREAK OUT IF WE ARE DONEIF LEN(@STRING) = 0 BREAKENDRETURNENDALTER FUNCTION [dbo].[Split](@String nvarchar(4000), @Delimiter char(1))RETURNS @Results TABLE (Items nvarchar(4000))ASBEGINDECLARE @INDEX INTDECLARE @SLICE nvarchar(4000)-- HAVE TO SET TO 1 SO IT DOESNT EQUAL Z--     ERO FIRST TIME IN LOOPSELECT @INDEX = 1WHILE @INDEX !=0BEGIN-- GET THE INDEX OF THE FIRST OCCURENCE OF THE SPLIT CHARACTERSELECT @INDEX = CHARINDEX(@Delimiter,@STRING)-- NOW PUSH EVERYTHING TO THE LEFT OF IT INTO THE SLICE VARIABLEIF @INDEX !=0SELECT @SLICE = LEFT(@STRING,@INDEX - 1)ELSESELECT @SLICE = @STRING-- PUT THE ITEM INTO THE RESULTS SETINSERT INTO @Results(Items) VALUES(@SLICE)-- CHOP THE ITEM REMOVED OFF THE MAIN STRINGSELECT @STRING = RIGHT(@STRING,LEN(@STRING) - @INDEX)-- BREAK OUT IF WE ARE DONEIF LEN(@STRING) = 0 BREAKENDRETURNEND

0 0