查询一个数据表,如何处理列里面0的数据转为NULL输出,让页面整洁。不用CASE

解决方案 »

  1.   

    不用case貌似要写更多的代码吧
    例如将表用left join自连接,b表where col>0,然后输出b表的col列
      

  2.   

    目前我见到的情况,case when反而是最好的方法
      

  3.   

    可以使用nullif()函数,e.g.use tempdb
    go
    if object_id('#') is not null drop table #
    create table #(id int)
    insert into #(id)values(1),(0),(0),(2)
    select nullif(id,0) as id from #
    --------------------------------------
    1
    NULL
    NULL
    2
      

  4.   

    好像case when还比较简单一点
      

  5.   

    比较 NULLIF 和 CASE
    若要显示 NULLIF 和 CASE 之间的相似性,则以下查询将计算 MakeFlag 和 FinishedGoodsFlag 列中的值是否相同。第一个查询使用 NULLIF。第二个查询使用 CASE 语句。
    USE AdventureWorks;
    GOSELECT ProductID, MakeFlag, FinishedGoodsFlag, 
       NULLIF(MakeFlag,FinishedGoodsFlag)AS 'Null if Equal'
    FROM Production.Product
    WHERE ProductID < 10;
    GOSELECT ProductID, MakeFlag, FinishedGoodsFlag,'Null if Equal' =
       CASE
           WHEN MakeFlag = FinishedGoodsFlag THEN NULL
           ELSE MakeFlag
       END
    FROM Production.Product
    WHERE ProductID < 10;
    GO
      

  6.   

    --用unllif(列名,需要转换的值)
    --例如:
    if object_id('b','u')is not null
    drop table b
    create table b
    (
    id tinyint
    )
    insert into b values(0),(1),(0),(3)select * from b
    select nullif(id,0) from b
      

  7.   

    select NULLIF ( col_name, 0) from tab_name
    跟NULL有关的函数:ISNULL,NULLIF,COALESCE