isnull 函数不 return 正确
isnull function does not return correct
当我使用 isnull 时它不会 return '' 请看下面我有原始 DOB,使用 isnull,转换为日期。
您需要将 dob
转换为 char/nchar/varchar/nvarchar
类型才能像那样使用 isnull()
或 coalesce()
。
select isnull(convert(varchar(10),dob,120),'')
如果您确实想要 return 日期值的空字符串,您可以在新查询中尝试此操作 window。它创建一个 table 来重新定义您对空日期值的要求,然后在删除 table.
之前选择该值
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
当我使用 isnull 时它不会 return '' 请看下面我有原始 DOB,使用 isnull,转换为日期。
您需要将 dob
转换为 char/nchar/varchar/nvarchar
类型才能像那样使用 isnull()
或 coalesce()
。
select isnull(convert(varchar(10),dob,120),'')
如果您确实想要 return 日期值的空字符串,您可以在新查询中尝试此操作 window。它创建一个 table 来重新定义您对空日期值的要求,然后在删除 table.
之前选择该值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