如果select '  ' as value,*  into #temp from table1这样建立了一个临时表,其中字段value的类型默认成varchar的,不可为空现在我update #temp set value = null  报错说value字段不能update成null现在求SQL使得可以完成此update

解决方案 »

  1.   

    不是=null  是 is null! 去看看 null的基本用法!
      

  2.   

    。。你都定义NOT NULL
    你还要为nULL
      

  3.   

    ALTER TABLE #TEMP ALTER [VALUE] VARCHAR(20) NULLupdate #temp set [value] = null
      

  4.   

    可是我写在存储过程中的语句是update #temp
    set
    value = @value此时@value有可能是null,也可能不是null,这该怎么办?
      

  5.   


    既然是参数 那还不简单
    更新前判断下是不是NULL
      

  6.   


    UPDATE #temp
    SET value = CASE WHEN @value IS NULL THEN '' ELSE @value end
      

  7.   

    UPDATE #temp
    SET [valu]e = ISNULL(@value,'' )
      

  8.   


    我现在只想update成null,不想update成''怎么办?
      

  9.   


    用 select NULL as value,* into #temp from table1 生成临时表即可。
      

  10.   


    我现在要update成null,生成新的东西,这样会比较繁琐
      

  11.   

    我看的有些糊涂
    既然定义的临时表value字段不能为空
    你为什么非要更新为null咧?
    楼主要非要更新为null,那就修改字段可为空
      

  12.   

    楼主既然要NULL,只能表结构允许为NULL,参考3楼
      

  13.   

    那你需要修改表结构,允许Value字段为NULLALTER TABLE temp 
    ALTER COLUMN  Value VARCHAR(30) NULL有一点需要理解的就是空字符串与NULL的差别
    空字符串用 ‘’来表示,NULL值表示是 该字段的值是 UNKNOWN,即是未知的,这才是NULL.