我正在测试一些返回值的SQL查询。
我从中选择的表中具有CloseDate
字段中的值NULL
。我有一个逻辑检查是否是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
查询有什么问题?
此表达式:
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