Sql server 字段为空时TSQL转换int

Sql server 字段为空时TSQL转换int,sql-server,tsql,stored-procedures,sql-server-2012,Sql Server,Tsql,Stored Procedures,Sql Server 2012,我有一个简单的查询,它根据一些数据生成报告。如果字段值为null,我需要在报告中输入N/A的值 为此,我执行:ISNULL(proj.projectID,'N/A)作为projectID 将varchar值“N/A”转换为int数据类型时,返回错误:error:conversion faield 我尝试这样做,但得到了相同的错误: CAST(ISNULL(proj.projectID,'N/A)作为varchar)作为projectID 如何实现这一点?在测试isnull之前,您必须进行转换:

我有一个简单的查询,它根据一些数据生成报告。如果字段值为
null
,我需要在报告中输入
N/A
的值

为此,我执行:
ISNULL(proj.projectID,'N/A)作为projectID

将varchar值“N/A”转换为int数据类型时,返回错误:
error:conversion faield

我尝试这样做,但得到了相同的错误:

CAST(ISNULL(proj.projectID,'N/A)作为varchar)作为projectID


如何实现这一点?

在测试isnull之前,您必须进行转换:

select ISNULL(convert(varchar(50),proj.projectID), 'N/A) as projectID

在测试isnull之前必须进行转换:

select ISNULL(convert(varchar(50),proj.projectID), 'N/A) as projectID

在单个列中不能有混合数据类型。您必须将所有数据转换为varchar,或者首选的选项是将这种格式保留在前端。您应该在
ISNULL
之前使用
CAST
ISNULL(CAST(projectID为varchar(50)),'N/A')
您不能在单个列中使用混合数据类型。您必须将所有数据转换为varchar,或者首选的选项是将这种格式保留在前端。您应该在
ISNULL
之前使用
CAST
ISNULL(CAST(projectID为varchar(50)),'N/A')
我同意Avitus的观点,应该这样做。错误的意思是,它试图将右边的内容设置为ISNULL,左边的数据类型是INT,它是“N/A”。它不能隐式地这样做,所以它需要您显式地将ProjectID转换为varchar,因为您不能显式地将“N/A”转换为INT。我同意Avitus的观点,应该这样做。错误的意思是,它试图将ISNULL右边的内容设置为“N/A”,左边的数据类型是一个INT。它不能隐式地这样做,因此它需要您显式地将ProjectID转换为varchar,因为您不能显式地将“N/A”转换为INT。