Sql isnull函数不返回正确值

Sql isnull函数不返回正确值,sql,sql-server,isnull,Sql,Sql Server,Isnull,当我使用isnull时,它不会返回“”请参见下面我有原始DOB,使用isnull,强制转换为日期。您需要将DOB转换为char/nchar/varchar/nvarchar类型才能使用isnull()或coalesce() select isnull(convert(varchar(10),dob,120),'') 如果确实希望为日期值返回空字符串,可以在新的查询窗口中尝试此操作。它创建一个表来重新引入对空日期值的要求,然后在删除该表之前选择该值 CREATE TABLE dbo.Test (


当我使用isnull时,它不会返回“”请参见下面我有原始DOB,使用isnull,强制转换为日期。

您需要将
DOB
转换为
char/nchar/varchar/nvarchar
类型才能使用
isnull()
coalesce()

select isnull(convert(varchar(10),dob,120),'')

如果确实希望为日期值返回空字符串,可以在新的查询窗口中尝试此操作。它创建一个表来重新引入对空日期值的要求,然后在删除该表之前选择该值

CREATE TABLE dbo.Test
(
Id INT IDENTITY(1,1) NOT NULL
,Date1 DATE NULL
)

INSERT INTO dbo.Test(Date1) VALUES ('01/01/2017')
INSERT INTO dbo.Test(Date1) VALUES ('01/02/2017')
INSERT INTO dbo.Test(Date1) VALUES (NULL)
INSERT INTO dbo.Test(Date1) VALUES ('01/04/2017')

SELECT * FROM dbo.Test

SELECT Date1 = CASE WHEN date1 IS NULL THEN '' ELSE CAST(DATE1 AS    VARCHAR(10)) END from dbo.Test

DROP TABLE dbo.Test
go

当您将
''
强制转换为
日期时间时
返回的值为
1900-01-01 00:00:00
。它正在做你让它做的事情。也许你在寻找这样的东西:
Case当Dob为Null时,然后“Else Convert(Varchar(15),Dob)结束为IsNull”
你为什么要在这里抑制Null?@SeanLange我在拉一个随着年龄增长的患者Dob。当患者dob为空时,我希望显示“”。谢谢…您应该允许它从数据库返回NULL。如果希望NULL显示为空字符串,则应在前端处理。