Sql字符串分隔函数
2010-10-31 21:53
309 查看
IF OBJECT_ID('fn_split', 'FN') IS NOT NULL
DROP FUNCTION fn_split
GO
CREATE FUNCTION [dbo].[fn_split]
(
@Source VARCHAR(MAX),
@Separator CHAR(1)
)
RETURNS @TB TABLE(VL VARCHAR(100))
AS
BEGIN
DECLARE @TMP VARCHAR(MAX)
DECLARE @VL VARCHAR(100)
SET @TMP = @Source
WHILE @TMP <> ''
BEGIN
IF CHARINDEX(@Separator, @TMP) = 0
BEGIN
SET @VL = LTRIM(RTRIM(@TMP))
IF @VL <> ''
BEGIN
INSERT INTO @TB
SELECT @VL
SET @TMP = ''
END
END
ELSE
BEGIN
SET @VL = SUBSTRING(@TMP, 0, CHARINDEX(@Separator, @TMP))
SET @VL = LTRIM(RTRIM(@VL))
IF @VL <> ''
BEGIN
INSERT INTO @TB
SELECT @VL
END
SET @TMP = SUBSTRING(@TMP, CHARINDEX(@Separator, @TMP) + 1, LEN(@TMP))
SET @TMP = LTRIM(RTRIM(@TMP))
END
END
RETURN;
END
DROP FUNCTION fn_split
GO
CREATE FUNCTION [dbo].[fn_split]
(
@Source VARCHAR(MAX),
@Separator CHAR(1)
)
RETURNS @TB TABLE(VL VARCHAR(100))
AS
BEGIN
DECLARE @TMP VARCHAR(MAX)
DECLARE @VL VARCHAR(100)
SET @TMP = @Source
WHILE @TMP <> ''
BEGIN
IF CHARINDEX(@Separator, @TMP) = 0
BEGIN
SET @VL = LTRIM(RTRIM(@TMP))
IF @VL <> ''
BEGIN
INSERT INTO @TB
SELECT @VL
SET @TMP = ''
END
END
ELSE
BEGIN
SET @VL = SUBSTRING(@TMP, 0, CHARINDEX(@Separator, @TMP))
SET @VL = LTRIM(RTRIM(@VL))
IF @VL <> ''
BEGIN
INSERT INTO @TB
SELECT @VL
END
SET @TMP = SUBSTRING(@TMP, CHARINDEX(@Separator, @TMP) + 1, LEN(@TMP))
SET @TMP = LTRIM(RTRIM(@TMP))
END
END
RETURN;
END
相关文章推荐
- sql逗号分隔字符串转化成table的函数
- SQL字符串逗号分隔函数
- SQL自定义函数split 将数组(分隔字符串)返回阵列(表)
- SQL自定义函数split分隔字符串
- sql字符串分隔函数
- [原创]SQL表值函数:把用逗号分隔的字符串转换成表格数据
- SQL自定义函数split分隔字符串
- SQL字符串分隔函数(fn_split)
- SQL自定义函数split分隔字符串
- sql 字符串分隔函数
- 在Sql中编写函数功能分隔字符串(同VB的split)
- SQL自定义函数split分隔字符串
- SQL中获取字符串中的字母,数字,非数字函数
- 在sql 数据库中,用脚来判断字符串是否为数字的函数
- SQL字符串处理函数
- sql把逗号分隔的字符串拆成临时表
- 有没有把数组直接转成以逗号分隔的字符串的函数
- 常用SQL字符串函数问题集锦
- sql将列转换为以逗号分隔的字符串
- 在sql中实现字符串分割(函数)