Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:ISNULL函数具有不同类型的参数_Sql_Sql Server_Database_Sql Server 2008_Isnull - Fatal编程技术网

SQL:ISNULL函数具有不同类型的参数

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

在SQL Server中,函数必须具有相同类型的参数

校验表达式

要检查的表达式是否为NULL。check_表达式可以是 任何类型

重置价值

如果check_表达式为NULL,则返回的表达式。 替换值必须与检查表达式具有相同的类型

如何将其用于不同类型的参数?我想与
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),“-”)
问题解决了。现在,您有另一个问题。这意味着另一个问题。是的,我解决了。谢谢!