如何在SQL Server中将try_convert与可为空的字段进行比较

时间:2019-01-29 09:54:13

标签: sql-server

我有一个逃生路线,在任何情况下我都会设法撤出一定数量的人口。 在一种情况下,我使用SQL Server的Try_convert,它实际上可以向我返回NULL。 这是怎么回事:如果它返回我NULL并实际上有一个NULL值字段,则不会给出我没有问过的答案是否为null的信息。 它有一个简短有效的解决方案吗?

我的代码:

ALTER FUNCTION [dbo].[GetMortgageDetailsId] 
(@GetFiled nvarchar(8)='00000000')
RETURNS int
AS
BEGIN

   declare @MortgageDetailsId int = null

   set @MortgageDetailsId= (select top 1 t.id from Table_1 t
       WHERE t.filed1 = TRY_CONVERT(date,SUBSTRING(@GetFiled, 5, 4) + SUBSTRING(@GetFiled, 3, 2) + SUBSTRING(@GetFiled, 1, 2)))

   RETURN @MortgageDetailsId

END

filed1字段的定义是:

[filed1] [date] NULL,

1 个答案:

答案 0 :(得分:0)

需要问:

ALTER FUNCTION [dbo].[GetMortgageDetailsId] 
(@GetFiled nvarchar(8)='00000000')
RETURNS int
AS
BEGIN

   declare @MortgageDetailsId int = null

   set @MortgageDetailsId= (select top 1 t.id from Table_1 t
       WHERE t.filed1 = (TRY_CONVERT(date,SUBSTRING(@GetFiled, 5, 4) + SUBSTRING(@GetFiled, 3, 2) + SUBSTRING(@GetFiled, 1, 2))))
                      or (@GetFiled='00000000' and t.filed1 is null))

   RETURN @MortgageDetailsId

END