SQL:ISNULL函数具有不同类型的参数
在SQL Server中,函数必须具有相同类型的参数 校验表达式 要检查的表达式是否为NULL。check_表达式可以是 任何类型 重置价值 如果check_表达式为NULL,则返回的表达式。 替换值必须与检查表达式具有相同的类型 如何将其用于不同类型的参数?我想与SQL:ISNULL函数具有不同类型的参数,sql,sql-server,database,sql-server-2008,isnull,Sql,Sql Server,Database,Sql Server 2008,Isnull,在SQL Server中,函数必须具有相同类型的参数 校验表达式 要检查的表达式是否为NULL。check_表达式可以是 任何类型 重置价值 如果check_表达式为NULL,则返回的表达式。 替换值必须与检查表达式具有相同的类型 如何将其用于不同类型的参数?我想与date和string参数一起使用,比如ISNULL(A.date,'-') 注意:日期的类型是datetime 编辑-1:我的完整查询得到0行: SELECT A.pkey as KREDİ, A.SUMMARY , D.B
date
和string
参数一起使用,比如ISNULL(A.date,'-')
注意:日期的类型是datetime
编辑-1:我的完整查询得到0行:
SELECT A.pkey as KREDİ, A.SUMMARY , D.BayiStatu AS STATU, D.Sorumlu AS SORUMLU, C.BayiSonuc as SONUC, ISNULL( CONVERT(VARCHAR(25), A.CREATED, 112) , '-' ), ISNULL( CONVERT(VARCHAR(25), A.RESOLUTIONDATE, 112) , '-' ), dbo.CUSTVAL(11931, A.ID, 'S') AS BAYİ, ISNULL( CONVERT(VARCHAR(25), dbo.GetLastStatuTime(A.ID), 112) , '-' ) AS SON_STATU_TAR,j2.SUMMARY, ISNULL( CONVERT(VARCHAR(25), j2.CREATED, 112) , '-' ), ISNULL( CONVERT(VARCHAR(25), j2.RESOLUTIONDATE, 112) , '-' ), j3.SUMMARY, ISNULL( CONVERT(VARCHAR(25), j3.CREATED, 112) , '-' ), ISNULL( CONVERT(VARCHAR(25), j3.RESOLUTIONDATE, 112) , '-' )
FROM AspNetServicesDB.dbo.SONUC_MAP C, JİRA.resolution E, jira.issuestatus B, AspNetServicesDB.dbo.STATU_MAP D, Jira.jiraissue A
INNER JOIN Jira.issuelink i
ON i.SOURCE = A.ID and i.SEQUENCE = 0
INNER JOIN Jira.jiraissue As j2
ON i.DESTINATION =j2.ID
LEFT JOIN Jira.issuelink i2
ON i2.SOURCE = A.ID and i2.SEQUENCE = 1
LEFT JOIN Jira.jiraissue As j3
ON i2.DESTINATION = j3.ID
WHERE A.issuestatus = B.ID
AND 'BAŞARAN OTOMATİV' = dbo.CUSTVAL(11931, A.ID, 'S')
AND B.pname = D.JiraStatu collate Turkish_CS_AI
AND A.issuetype != 11
AND A.RESOLUTION = E.ID
AND E.pname = C.JiraSonuc collate Turkish_CS_AI
编辑-2:但这是可行的
select ISNULL( CONVERT(VARCHAR(25), A.RESOLUTIONDATE, 112) , '-' )
FROM Jira.jiraissue A
这可能是你不能加入的原因。ISNULL函数本身用作查询结果列,或者在最终成为查询结果列的表达式中使用。列中的所有字段/行必须具有相同的数据类型。所以你必须做出选择 一种解决方案是将日期强制转换为字符串,因此结果总是一个字符串,但我觉得最好的解决方案是为空日期返回NULL,并让表示层决定是否应将NULL日期显示为
-
,以及应以何种格式显示非NULL日期(客户端语言环境设置)
对于表示层,我指的是显示或输出这些数据的任何东西,可以是网页、CSV导出器、报告工具等等。ISNULL函数本身用作查询结果列,或者在最终成为查询结果列的表达式中使用。列中的所有字段/行必须具有相同的数据类型。所以你必须做出选择 一种解决方案是将日期强制转换为字符串,因此结果总是一个字符串,但我觉得最好的解决方案是为空日期返回NULL,并让表示层决定是否应将NULL日期显示为
-
,以及应以何种格式显示非NULL日期(客户端语言环境设置)
对于表示层,我指的是显示或输出这些数据的任何东西,可以是网页、CSV导出器、报告工具等等。您能简单地将日期转换为varchar吗?由于您的输出可能不是有效日期,因此这应该可以正常工作:
ISNULL(CONVERT(varchar(10), A.Date, 101),'-')
你能简单地把你的约会对象演成一个角色吗?由于您的输出可能不是有效日期,因此这应该可以正常工作:
ISNULL(CONVERT(varchar(10), A.Date, 101),'-')
您可以尝试:
CASE WHEN A.DATE IS NULL
THEN '-'
ELSE CONVERT(VARCHAR(25), A.DATE, 112)
END
您可以尝试:
CASE WHEN A.DATE IS NULL
THEN '-'
ELSE CONVERT(VARCHAR(25), A.DATE, 112)
END
如果确实希望使用
-
而不是null
,则需要将日期强制转换为字符串
declare @T table(adate datetime)
insert into @T values(null)
insert into @T values(getdate())
select isnull(convert(varchar(23), adate, 126), '-')
from @T
如果确实希望使用
-
而不是null
,则需要将日期强制转换为字符串
declare @T table(adate datetime)
insert into @T values(null)
insert into @T values(getdate())
select isnull(convert(varchar(23), adate, 126), '-')
from @T
我在Gridview中使用,它的dateformatstring是{0:f}。如何使用Gridview检查是否为null?我不太喜欢.NET,但我认为您应该能够指定列格式,或者甚至可以在某个地方进行格式设置。但是我不能确定,从来没有用这个GridView做过任何事情,但是如果这不容易做到,我会感到惊讶。当问题是关于
ISNULL()
时,你的意思是说“IFNULL”吗?更改了它。我的意思是,一个函数用另一个值替换一个空值,该值称为IFNULL、ISNULL、NVL或其他名称,具体取决于数据库。;)是的,NVL是甲骨文。但它们本质上是相同的功能。我刚刚输入了一个错误。我在Gridview中使用,它的dateformatstring是{0:f}。如何使用Gridview检查是否为null?我不太喜欢.NET,但我认为您应该能够指定列格式,或者甚至可以在某个地方进行格式设置。但是我不能确定,从来没有用这个GridView做过任何事情,但是如果这不容易做到,我会感到惊讶。当问题是关于ISNULL()
时,你的意思是说“IFNULL”吗?更改了它。我的意思是,一个函数用另一个值替换一个空值,该值称为IFNULL、ISNULL、NVL或其他名称,具体取决于数据库。;)是的,NVL是甲骨文。但它们本质上是相同的功能。我刚才打了个错字。@SonerGönül:您是否将此表达式用作筛选器(在中的某个位置,其中或上的)?@AndriyM我在我的问题中添加了完整查询。@SonerGönül:您是否将此表达式用作筛选器(在中的某个位置,其中或上的)?@AndriyM我在我的问题中添加了完整查询。如果选择为空(CONVERT(VARCHAR(25),A.RESOLUTIONDATE,112),“-”)
工作,然后这个ISNULL(A.DATE,“-”)
问题解决了。现在,你有了另一个问题。这意味着另一个问题。是的,我解决了。谢谢!如果选择ISNULL(CONVERT(VARCHAR(25,A.RESOLUTIONDATE,112),“-”)
工作,那么这个ISNULL(A.DATE),“-”)
问题解决了。现在,您有另一个问题。这意味着另一个问题。是的,我解决了。谢谢!