前两天公司有一个功能需求,客户给出几天的工作时间和休息,然后顾客的访问时间必须要在工作时间之内和休息时间之外,所以要求做一下判断.本来以为这个没什么,谁知道客户提供的工作时间段和休息时间段不定,给出的又不是日期格式,是串联后的文本格式,如下格式,想了一下,只能下个函数来解决,分享给其他人看看 GO /****** Object: UserDefinedFunction [dbo].[CheckDate] ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTI
将字符串分割为表表经常用到,这里 SQL表值函数与CLR 表值函数,两种实现方法例出来如下: SELECT * FROM FP_EMSDB_PUB.dbo.SqlSplit('/','1oz/1.5oz/2oz/3oz') 效果如下: SQL实现表值函数 CREATE FUNCTION [dbo].[splitStr]( @s varchar(max), --待分拆的字符串 ) --数据分隔符 ),), col varchar(max)) --建立临时表保存分割后的字符 AS BEGIN DE
Create FUNCTION [dbo].[SplitIndex] ( @str AS VARCHAR(max), @Index AS INT, ) = '/' ) ) AS BEGIN ) --待分拆的字符串 ,), col varchar(max)) --建立临时表保存分割后的字符 DECLARE @splitlen INT BEGIN )) ,CHARINDEX(@SplitChar,@str)+@splitlen,'') END INSERT @tab VALUES(@str) SEL
Create FUNCTION [dbo].[SplitTable]( @s varchar(max), --待分拆的字符串 ) --数据分隔符 ),), col varchar(max)) --建立临时表保存分割后的字符 AS BEGIN DECLARE @splitlen int BEGIN )) ,CHARINDEX(@split,@s)+@splitlen,'') END INSERT @re VALUES(@s) RETURN END 示例: SELECT * FROM [dbo].[