【问题标题】:Getting error when try to convert "0.0" to empty string using nullif()尝试使用 nullif() 将“0.0”转换为空字符串时出错
【发布时间】:2012-03-10 01:01:29
【问题描述】:

我尝试使用 nullif() 方法将十进制字段空值(“0.0”)转换为空字符串(“”)。但是转换导致错误。我对另一个 int 字段尝试了相同的方法,并且效果很好。

如何在 sql 查询中将十进制 null 值转换为空字符串?

【问题讨论】:

    标签: asp.net .net sql sql-server database


    【解决方案1】:
    1. SQL 对'values' 使用单引号,对"column labels" 使用双引号
    2. '0.0' 是字符串(对于 varchar 列),0.00 是数字(对于 int / dec 列)
    3. '0.0'0.0 都不是 nulls
    4. nullif() 为正确的条件返回 null,而不是空字符串

    所以你可能想要这样的东西:

    case when mydecimal = 0 then '' else cast(mydecimal as varchar(10)) end
    

    或:

    nullif(mydecimal, 0)
    

    【讨论】:

    • 是的,它有效,我使用 nullif(myfield, ' ' ) 像这样,它将 null 转换为空字符串,除了十进制字段。谢谢。
    【解决方案2】:

    在 TSQL 中:如果我没记错的话,ISNULL(value, '') 调用了合并运算符。

    【讨论】:

    • 或使用 COALESCE 内置函数本身。您必须首先从十进制转换值,但最终 ISNULL 或 COALESCE 都提供比 CASE 更短的符号,并且比 NULLIF 更直观。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-27
    • 2017-01-03
    相关资源
    最近更新 更多