概述
日期处理
根据传入日期, 返回改日期当月日期, 因为前端控件大多数不做处理, 类似数字的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