Sql Server中常用的6个自定义函数分享
2018-01-30 16:35
357 查看
转自:http://www.jb51.net/article/56691.htm
1 IF OBJECT_ID('DBO.DISTINCT_STR') IS NOT NULL 2 DROP FUNCTION DBO.DISTINCT_STR 3 GO 4 --此函数操作形如["a", "b", 1,2,3,1,"a"]的数组,去重后,["b",1,2,3] 5 --@S(原有参数), @SPLIT(分隔符), @NEW_STR(新添加字符串) 6 CREATE FUNCTION DISTINCT_STR(@S NVARCHAR(300),@SPLIT VARCHAR(50),@NEW_STR VARCHAR(300)) 7 RETURNS VARCHAR(300) 8 AS 9 BEGIN 10 DECLARE @NEW VARCHAR(200),@INDEX INT,@TEMP VARCHAR(200) 11 12 IF CHARINDEX(']',@S)>0 and CHARINDEX(']', @S) > 0 13 SET @S=SUBSTRING(@S,charindex('[',@S)+1,LEN(@S)-2) + @SPLIT + @NEW_STR 14 ELSE 15 SET @S=@NEW_STR 16 17 IF LEFT(@S,1)<>@SPLIT 18 SET @S = @SPLIT+@S 19 IF RIGHT(@S,1)<>@SPLIT 20 SET @S = @S+@SPLIT 21 WHILE CHARINDEX(@SPLIT,@S)>0 AND LEN(@S)<>1 22 BEGIN 23 SET @INDEX = CHARINDEX(@SPLIT,@S) 24 SET @TEMP = LEFT(@S,CHARINDEX(@SPLIT,@S,@INDEX+LEN(@SPLIT))) 25 IF @NEW IS NULL 26 SET @NEW = ISNULL(@NEW,'')+@TEMP 27 ELSE 28 SET @NEW = ISNULL(@NEW,'')+REPLACE(@TEMP,@SPLIT,'')+@SPLIT 29 WHILE CHARINDEX(@TEMP,@S)>0 30 BEGIN 31 SET @S=STUFF(@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT),CHARINDEX(@SPLIT,@S,CHARINDEX(@TEMP,@S)+LEN(@SPLIT))-CHARINDEX(@TEMP,@S),'') 32 END 33 END 34 RETURN '['+RIGHT(LEFT(@NEW,LEN(@NEW)-1),LEN(LEFT(@NEW,LEN(@NEW)-1))-1)+']' 35 END 36 GO
相关文章推荐
- Sql Server中常用的6个自定义函数分享
- Sql Server中常用的6个自定义函数分享
- SQL Server 2005学习之——常用函数与自定义函数
- SQL Server 常用自定义函数整理
- sql server 系统常用函数:聚合函数 数学函数 字符串函数 日期和时间函数和自定义函数
- Sql Server 常用自定义函数
- mysql常用函数汇总(分享)
- SQL Server 常用函数使用方法(持续更新)
- sql server 中利用自定义函数分隔字符串
- Oracle 与SQL Server 2000常用函数对照 [摘抄]
- mysql,SQL Server常用函数整理,以备不时之需
- SQL SERVER常用函数总结
- SQL Server和Oracle的常用函数对比
- SQL Server 2005常用函数汇总
- js常用自定义公共函数汇总
- SQL Server 2000常用函数
- Sql Server 常用函数
- .net 调用 sql server 自定义函数,并输出返回值
- 分享我常用的Javascript工具函数
- 常用JS中自定义函数及方法