SELECT   A   =   ISNULL(NULLIF('',''),'KKKKKKKKKKKKKKKKKKKKKKKKKK')
结果是K,如何做解释?

解决方案 »

  1.   

    SELECT   ISNULL(NULLIF('',''),'KKKKKKKKKKKKKKKKKKKKKKKKKK')/*
         
    ---- 
    (所影响的行数为 1 行)
    */
      

  2.   


     SELECT  A  =  ISNULL(NULLIF('   ','   '),'kkkkkkkk')
    A
    ----
    kkk(1 行受影响)
      

  3.   

    --2005
    SELECT  A  =  ISNULL(NULLIF('',''),'KKKKKKKKKKKKKKKKKKKKKKKKKK') 
    /*----
    K(1 行受影响)*/
      

  4.   


      SELECT   A   =   ISNULL(NULLIF('',''),'KKKKKKKKKKKKKKKKKKKKKKKKKK')
    --RESULT:A
    ----
    K(1 row(s) affected)
      

  5.   

    NULLIF返回的NULL是根据里面的两个常量自动生成的类型
      

  6.   

    SELECT  A  =  ISNULL(NULLIF(CONVERT(VARCHAR(50),''),''),'KKKKKKKKKKKKKKKKKKKKKKKKKK') 
      

  7.   

    DECLARE @T TABLE(
    COL1 VARCHAR(1)
    ,COL2 VARCHAR(10)
    ,COL3 VARCHAR(50)
    )
    INSERT INTO @T
    SELECT '','',''
    SELECT 
    ISNULL(NULLIF(COL1,COL2),'KKKKKKKKKKKKKKKKKKKK')
    ,ISNULL(NULLIF(COL2,COL3),'KKKKKKKKKKKKKKKKKKKK')
    ,ISNULL(NULLIF(COL3,''),'KKKKKKKKKKKKKKKKKKKK')
    --用COLACESE可以避免这种情况
    ,COALESCE(NULLIF(COL1,COL2),'KKKKKKKKKKKKKKKKKKKK')
    FROM @T/*
    K KKKKKKKKKK KKKKKKKKKKKKKKKKKKKK KKKKKKKKKKKKKKKKKKKK
    */
      

  8.   

    确实,NULLIF函数的结果如果返回的是一个参数,则声明的参数大小为该参数的初始大小。
      

  9.   

    NULLIF
    如果两个指定的表达式相等,则返回空值。语法
    NULLIF ( expression , expression )参数
    expression常量、列名、函数、子查询或算术运算符、按位运算符以及字符串运算符的任意组合。返回类型
    返回类型与第一个 expression 相同。类型是第一个参数的类型!