我正在测试一些SQL查询返回值。
我要选择的表在NULL
字段中有一个值CloseDate
。
我有一个逻辑检查它是否为NULL
,返回一个空字符串。但是,它返回01/01/1900
declare @value varchar(50) = '2346677888'
Set @Value=@Value +'%'
select CONVERT(varchar,ISNULL(m.CloseDate,''),101) as CloseDate from(
SELECT m.EdsClosedDate AS CloseDate
FROM [dbo].[tblMyTable] m
WHERE MID like @value) m
查询出了什么问题?
答案 0 :(得分:1)
此表达式:
select CONVERT(varchar, ISNULL(m.CloseDate, ''), 101) as CloseDate
更清楚地写为:
select CONVERT(varchar(255), COALESCE(m.CloseDate, 0), 101) as CloseDate
也就是说,空字符串等效于日期值“ 0”。 SQL Server从1900-01-01开始计数日期,这就是为什么您在结果中看到该日期的原因。
我不确定您的期望。如果您想要一个空字符串,请在 之后将该值转换为字符串:
select COALESCE(CONVERT(varchar(255), m.CloseDate, 101), '') as CloseDate