当字段为 NULL 时,TSQL Casting int

Posted

技术标签:

【中文标题】当字段为 NULL 时,TSQL Casting int【英文标题】:TSQL Casting int when field is NULL 【发布时间】:2016-02-22 14:54:15 【问题描述】:

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

为此,我这样做:ISNULL(proj.projectID, 'N/A) as projectID

这会返回错误:Error: conversion faield when converting the varchar value 'N/A' to data type int

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

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

我怎样才能做到这一点?

【问题讨论】:

您不能在单个列中包含混合数据类型。您要么必须将所有数据转换为 varchar,要么首选选项是将这种类型的格式留给前端。 你应该在ISNULL之前使用CASTISNULL(CAST(projectID AS VARCHAR(50)),'N/A') 【参考方案1】:

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

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

【讨论】:

我同意 Avitus,应该这样做。错误的意思是它试图使 ISNULL 右侧的内容,即左侧数据类型的“N/A”,即 INT。它不能隐式执行此操作,因此需要您将 ProjectID 显式转换为 varchar,因为您无法将“N/A”显式转换为 int。

以上是关于当字段为 NULL 时,TSQL Casting int的主要内容,如果未能解决你的问题,请参考以下文章

当涉及的字段之一为 NULL 时,MySQL 错误地允许重复条目

数据库字段为null时jdbc获取的值

TSQL - 将价格调整为 0.05 和 0.09。 UPDATE 正在产生 NULL?

当某些字段可以为 NULL 时,我可以使用对象作为 JPA 中条件查询的谓词吗?

TSQL 数组初始化和 LINQ Where on Array

Tsql -> 从今天开始过滤 6 个月的数据,表中的日期字段为 YYYYMM