文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

数据库:分享四个实用的SQL Server脚本函数,欢迎收藏

2024-12-03 13:39

关注

[[374709]]

1、字符串指定字符分割为list 

  1. -- 字符串指定字符分割为list 
  2. CREATE FUNCTION [dbo].[splitl] ( 
  3.     @String VARCHAR(MAX), 
  4.     @Delimiter VARCHAR(MAX
  5. RETURNS @temptable TABLE (items VARCHAR(MAX)) AS 
  6. BEGIN 
  7.     DECLARE @idx INT=1 
  8.     DECLARE @slice VARCHAR(MAX)  
  9.     IF LEN(@String) < 1 OR LEN(ISNULL(@String,'')) = 0 
  10.         RETURN 
  11.     WHILE @idx != 0 
  12.     BEGIN 
  13.         SET @idx = CHARINDEX(@Delimiter,@String) 
  14.         IF @idx != 0 
  15.             SET @slice = LEFT(@String,@idx - 1) 
  16.         ELSE 
  17.             SET @slice = @String 
  18.         IF LEN(@slice) > 0 
  19.             INSERT INTO @temptable(items) VALUES(@slice) 
  20.         SET @String = RIGHT (@String, LEN(@String) - @idx) 
  21.         IF LEN(@String) = 0 
  22.             BREAK 
  23.     END 
  24.     RETURN 
  25. END 
  26. GO 
  27. -- 调用方式  
  28. SELECT * FROM dbo.splitl('aaa|bbb|ccc','|'

2、数字去掉末尾的0 

  1. -- 数字去掉末尾的0 
  2. CREATE function [dbo].[ClearZero](@inValue varchar(50)) 
  3. returns varchar(50) 
  4. as 
  5. begin 
  6. declare @returnValue varchar(20) 
  7. if(@inValue=''
  8.    set @returnValue='' --空的时候为空 
  9. else if (charindex('.',@inValue) ='0'
  10.    set @returnValue=@inValue --针对不含小数点的 
  11. else if ( substring(reverse(@inValue),patindex('%[^0]%',reverse(@inValue)),1)='.'
  12.           set @returnValue = 
  13.             left(@inValue,len(@inValue)-patindex('%[^0]%',reverse(@inValue)))  
  14.             --针对小数点后全是0的 
  15.       else 
  16.           set @returnValue =left(@inValue,len(@inValue)-  
  17.                                  patindex('%[^0]%.%',reverse(@inValue))+1) --其他任何情形 
  18. return @returnValue 
  19. end 
  20. --调用示例 
  21. SELECT dbo.ClearZero(258.250300) 

3、创建表、视图、函数、存储过程判断是否存在 

  1.  
  2. IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'Func_Name')  
  3. DROP FUNCTION Func_Name; 
  4. GO 
  5. --创建函数/方法 
  6. CREATE FUNCTION Func_Name 
  7.     @a INT 
  8. RETURN INT 
  9. AS 
  10. BEGIN 
  11. --coding 
  12. END 
  13. GO 
  14.  
  15. IF EXISTS (OBJECT_NAME('Proc_Name','P'IS NOT NULL DROP PROC Proc_Name; 
  16. GO 
  17. --创建存储过程 
  18. CREATE PROC Proc_Name 
  19. AS SELECT * FROM Table_Name 
  20. GO 
  21.  
  22. IF EXISTS (SELECT * FROM dbo.sysobjects WHERE name = 'Table_Name')  
  23. DROP VIEW Table_Name; 
  24. GO 
  25. --创建数据表 
  26. CREATE TABLE Table_Name 
  27.     Id INT PRIMARY KEY NOT NULL 
  28.  
  29. IF EXISTS (SELECT * FROM sys.views WHERE name = 'View_Name')  
  30. DROP VIEW View_Name  
  31. GO 
  32. --创建视图 
  33. CREATE VIEW View_Name AS 
  34.     SELECT SELECT * FROM table_name 
  35. GO 

4、金额转换为大写 

  1.  
  2.  
  3. CREATE FUNCTION [dbo].[CNumeric](@num numeric(14,2)) 
  4.     returns nvarchar(100) 
  5. BEGIN 
  6.     Declare @n_data nvarchar(20),@c_data nvarchar(100),@n_str nvarchar(10),@i int 
  7.     Set @n_data=right(space(14)+cast(cast(abs(@num*100) as bigintas nvarchar(20)),14) 
  8.     Set @c_data='' 
  9.     Set @i=1 
  10.  
  11.     WHILE @i<=14 
  12.     Begin 
  13.         set @n_str=substring(@n_data,@i,1) 
  14.         if @n_str<>'' 
  15.         begin 
  16.         IF not ((SUBSTRING(@n_data,@i,2)= '00'or 
  17.         ((@n_str= '0'and ((@i=4) or (@i=8) or (@i=12) or (@i=14)))) 
  18.         SET @c_data=@c_data+SUBSTRING( N'零壹贰叁肆伍陆柒捌玖',CAST(@n_str AS int)+1,1) 
  19.         IF not ((@n_str= '0'and (@i <> 4) and (@i <> 8) and (@i <> 12)) 
  20.         SET @c_data=@c_data+SUBSTRING( N'仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1) 
  21.         IF SUBSTRING(@c_data,LEN(@c_data)-1,2)= N'亿万' 
  22.         SET @c_data=SUBSTRING(@c_data,1,LEN(@c_data)-1) 
  23.         END 
  24.         SET @i=@i+1 
  25.     END 
  26.     IF @num <0 
  27.         SET @c_data= '(负数)'+@c_data 
  28.     IF @num=0 
  29.         SET @c_data= '零圆' 
  30.     IF @n_str= '0' 
  31.         SET @c_data=@c_data+ '整' 
  32.  
  33.     RETURN(@c_data) 
  34. END 

 

 

来源:今日头条内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯