zoukankan      html  css  js  c++  java
  • 存储过程--自定义辅助函数--月初始日期/字符串处理

    概述

    • 为了数据处理方便, 编写几个函数用于处理数据.

    日期处理

    根据传入日期, 返回改日期当月日期, 因为前端控件大多数不做处理, 类似数字的floor操作

    /*----------------------------------------------------------*/
    /*    [F0_GetMonthBeginDateTime]                            */
    /*----------------------------------------------------------*/
    IF EXISTS ( SELECT 1 FROM sys.objects o WHERE object_id = object_id( N'[F0_GetMonthBeginDateTime]' ) AND OBJECTPROPERTY( object_id, N'IsTableFunction') IS NOT NULL )
    DROP FUNCTION [F0_GetMonthBeginDateTime]
    GO
     
    CREATE FUNCTION [dbo].[F0_GetMonthBeginDateTime]
    (
    @dt DATETIME
    )
    /*
    功能:取得传入日期的月初日期 如:2014-10-01 00:00:00.000
    */
    RETURNS DATETIME 
    AS
    BEGIN
      --SET @dt=CAST(CONVERT(VARCHAR(10), @dt, 121) AS DATETIME)
      --RETURN @dt    
      RETURN CAST(CAST(YEAR(@dt) AS VARCHAR)+'-'+RIGHT(CAST(100+MONTH(@dt) AS VARCHAR), 2)+'-01' AS DATETIME)
    END
    GO
    
    

    字符处理

    字符串去重

    /*----------------------------------------------------------*/
    /*    [F0SplitDistinctString]                               */
    /*----------------------------------------------------------*/
    IF EXISTS ( SELECT 1 FROM sys.objects o WHERE object_id = object_id( N'[F0SplitDistinctString]' ) AND OBJECTPROPERTY( object_id, N'IsTableFunction') IS NOT NULL )
    DROP FUNCTION [F0SplitDistinctString]
    GO
     
    CREATE FUNCTION [dbo].[F0SplitDistinctString]
    ( 
    @String VARCHAR(max),
    @Separator VARCHAR(1)
    )
    RETURNS VARCHAR(MAX) 
    AS
    /*
    功能:以符号@Separator隔开的字符串去重
    参数:@String 以逗号分隔的字符串
    */
    BEGIN
       DECLARE @Str VARCHAR(MAX)
       DECLARE @Return VARCHAR(MAX) = ''
    	
       --拆分IDs
       WHILE CHARINDEX( @Separator, @String ) > 0 
       BEGIN
          --截取第一个ID
          SELECT @Str = LEFT( @String, CHARINDEX( @Separator, @String ) - 1 )
          IF( @Str <> '' )
          BEGIN
    			IF CHARINDEX( @Separator + @Str + @Separator, @Separator + @Return + @Separator ) = 0
    			BEGIN
    				SET @Return = @Return + CASE WHEN @Return = '' THEN '' ELSE ',' END + @Str	
             END
          END
          --截取剩余的IDs
          SELECT @String = RIGHT( @String, LEN( @String ) - CHARINDEX( @Separator, @String ) )
       END
       
       IF( @String <> '' )
       BEGIN
    		IF CHARINDEX( @Separator + @String + @Separator, @Separator + @Return + @Separator ) = 0
    		BEGIN
    			SET @Return = @Return + CASE WHEN @Return = '' THEN '' ELSE ',' END + @String	
    		END
       END
       RETURN @Return
     
    END
    GO
    
    

    拆分一个以逗号分隔的字符串,将拆分的结果存入一个临时表并返回

    /*----------------------------------------------------------*/
    /*    [F0SplitIDs]                                          */
    /*----------------------------------------------------------*/
    IF EXISTS ( SELECT 1 FROM sys.objects o WHERE object_id = object_id( N'[F0SplitIDs]' ) AND OBJECTPROPERTY( object_id, N'IsTableFunction') IS NOT NULL )
    DROP FUNCTION [F0SplitIDs]
    GO
    CREATE FUNCTION [dbo].[F0SplitIDs]
    ( 
    @IDs VARCHAR(MAX) 
    )
    RETURNS @Return TABLE 
    ( ID VARCHAR(MAX) )
    AS
    /*
    功能:拆分一个以逗号分隔的字符串,将拆分的结果存入一个临时表并返回
    参数:@IDs 以逗号分隔的字符串
    */
    BEGIN
       DECLARE @ID VARCHAR(MAX), 
               @Separator VARCHAR(1)
       SET @Separator = ',' 
       
       --拆分IDs
       WHILE CHARINDEX( @Separator, @IDs ) > 0 
       BEGIN
          --截取第一个ID
          SELECT @ID = LEFT( @IDs, CHARINDEX( @Separator, @IDs ) - 1 )
          IF( @ID <> '' )
          BEGIN
             INSERT INTO @Return( ID ) VALUES ( @ID ) 
          END
          
          --截取剩余的IDs
          SELECT @IDs = RIGHT( @IDs, LEN( @IDs ) - CHARINDEX( @Separator, @IDs ) )
       END
       
       IF( @IDs <> '' )
       BEGIN
          INSERT INTO @Return( ID ) VALUES ( @IDs ) 
       END
       RETURN
     
    END
    GO
    
    
  • 相关阅读:
    Android中内容观察者的使用---- ContentObserver类详解 (转)
    Android应用中使用及实现系统“分享”接口
    logcat的调试 比较有用的几个命令
    ASP.NET AJAX入门系列(10):Timer控件简单使用
    ASP.NET AJAX入门系列(9):在母版页中使用UpdatePanel
    ASP.NET AJAX入门系列(8):自定义异常处理
    ASP.NET AJAX入门系列(7):使用客户端脚本对UpdateProgress编程
    ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍
    ASP.NET AJAX入门系列(5):使用UpdatePanel控件(二) UpdatePanel
    ASP.NET AJAX入门系列(4):使用UpdatePanel控件(一)
  • 原文地址:https://www.cnblogs.com/hijushen/p/10454684.html
Copyright © 2011-2022 走看看