我有以下用户定义的函数正确运行;但是,它显示了根据ISDATE条件检查时返回0的所有记录。这些记录在查询结果中显示为NULL值。我不想看到那些记录。如何从查询结果中删除它们?
我必须设置ISDATE()检查,因为某些日志条目具有以下格式:
(“截止日期: - > xx / xx / xxxx”而不是“截止日期:xx / xx / xxxx - > yy / yy / yyyy”)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION ParseValueFromChgLog
(
@LogText varchar(max),
@ValueNum int -- 1 = original date or 2 = changed to date
)
RETURNS date
AS
BEGIN
-- Declare the return variable here
DECLARE @Result date
DECLARE @ValueCheck char(1)
DECLARE @Index bigint
DECLARE @OrigStep bigint
DECLARE @StrDate varchar(max)
-- Parse "Original Date"
IF @ValueNum = 1
BEGIN
SET @Index = 10
SET @OrigStep = 8
SET @StrDate = SUBSTRING(@LogText,CHARINDEX('Due Date', @LogText)+ @Index, @OrigStep)
IF ISDATE(@StrDate) = 1
BEGIN
SET @Result = CAST(SUBSTRING(@LogText,CHARINDEX('Due Date', @LogText)+ @Index, @OrigStep)AS DATE)
--SET @Result = @Date
END
END
-- Parse "Changed to Date"
IF @ValueNum = 2
BEGIN
SET @Index = 21
SET @OrigStep = 9
SET @StrDate = SUBSTRING(@LogText,CHARINDEX('Due Date', @LogText)+ @Index, @OrigStep)
IF ISDATE(@StrDate) = 1
BEGIN
SET @Result = CAST(SUBSTRING(@LogText,CHARINDEX('Due Date', @LogText)+ @Index, @OrigStep)AS DATE)
--SET @Result = @Date
END
END
-- Return the result of the function
RETURN @Result
END
GO
由于
答案 0 :(得分:0)
没有办法通过此函数返回值。
但您可以按Where function_Column is not null