一个select的类型问题,大家请进...

nattystyle 2010-03-17 10:38:46
如果

select ' ' as value,* into #temp from table1

这样建立了一个临时表,其中字段value的类型默认成varchar的,不可为空

现在我

update #temp set value = null 报错

说value字段不能update成null



现在求SQL使得可以完成此update
...全文
132 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Barton 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fredrickhu 的回复:]

引用 5 楼 feixianxxx 的回复:
引用 4 楼 nattystyle 的回复:
可是我写在存储过程中的语句是

update #temp
set
value = @value

此时@value有可能是null,也可能不是null,这该怎么办?


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


up
[/Quote]

up
老黎 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sql77 的回复:]
引用 9 楼 nattystyle 的回复:
引用 8 楼 sql77 的回复:
SQL code
UPDATE #temp
SET [valu]e = ISNULL(@value,'' )


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

楼主既然要NULL,只能表结构允许为NULL,参考3楼
[/Quote]
参考3楼
违反了约束性
SQL77 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 nattystyle 的回复:]
引用 8 楼 sql77 的回复:
SQL code
UPDATE #temp
SET [valu]e = ISNULL(@value,'' )


我现在只想update成null,不想update成''怎么办?
[/Quote]
楼主既然要NULL,只能表结构允许为NULL,参考3楼
feegle_develop 2010-03-17
  • 打赏
  • 举报
回复
我看的有些糊涂
既然定义的临时表value字段不能为空
你为什么非要更新为null咧?
楼主要非要更新为null,那就修改字段可为空
nattystyle 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 npkaida 的回复:]
SQL code

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

我现在要update成null,生成新的东西,这样会比较繁琐
npkaida 2010-03-17
  • 打赏
  • 举报
回复

用 select NULL as value,* into #temp from table1 生成临时表即可。
nattystyle 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sql77 的回复:]
SQL code
UPDATE #temp
SET [valu]e = ISNULL(@value,'' )
[/Quote]

我现在只想update成null,不想update成''怎么办?
SQL77 2010-03-17
  • 打赏
  • 举报
回复
UPDATE #temp
SET [valu]e = ISNULL(@value,'' )
老黎 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nattystyle 的回复:]
可是我写在存储过程中的语句是

update #temp
set
value = @value

此时@value有可能是null,也可能不是null,这该怎么办?
[/Quote]

UPDATE #temp
SET value = CASE WHEN @value IS NULL THEN '' ELSE @value end
--小F-- 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 feixianxxx 的回复:]
引用 4 楼 nattystyle 的回复:
可是我写在存储过程中的语句是

update #temp
set
value = @value

此时@value有可能是null,也可能不是null,这该怎么办?


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

up
feixianxxx 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nattystyle 的回复:]
可是我写在存储过程中的语句是

update #temp
set
value = @value

此时@value有可能是null,也可能不是null,这该怎么办?
[/Quote]

既然是参数 那还不简单
更新前判断下是不是NULL
nattystyle 2010-03-17
  • 打赏
  • 举报
回复
可是我写在存储过程中的语句是

update #temp
set
value = @value

此时@value有可能是null,也可能不是null,这该怎么办?
SQL77 2010-03-17
  • 打赏
  • 举报
回复
ALTER TABLE #TEMP ALTER [VALUE] VARCHAR(20) NULL

update #temp set [value] = null
feixianxxx 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 nattystyle 的回复:]
如果

select ' ' as value,* into #temp from table1

这样建立了一个临时表,其中字段value的类型默认成varchar的,不可为空

现在我

update #temp set value = null 报错

说value字段不能update成null



现在求SQL使得可以完成此update
[/Quote]
。。。。。你都定义NOT NULL
你还要为nULL
ICrazyBoy 2010-03-17
  • 打赏
  • 举报
回复
不是=null 是 is null! 去看看 null的基本用法!
清风智语 2010-03-17
  • 打赏
  • 举报
回复
那你需要修改表结构,允许Value字段为NULL

ALTER TABLE temp
ALTER COLUMN Value VARCHAR(30) NULL

有一点需要理解的就是空字符串与NULL的差别
空字符串用 ‘’来表示,NULL值表示是 该字段的值是 UNKNOWN,即是未知的,这才是NULL.

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧