SQL 空值替换问题

meimeizeng 2011-07-22 09:15:38
请问下:我现在想做到:一张数据库表(100条记录),有A,B,C,D,E这5个字段,每个字段中都有很多空值,我现在用我自己的方法把填补缺失的值计算出来,要替换这些空值,比如:A字段的空值替换成1,B字段的空值替换成2,C字段的空值替换成3,D字段的空值替换成4,E字段的空值替换成5.我怎么样用比较简便的语句,立刻执行出来(不需要视图),把缺失值填补到空缺的栏目里。如果用update...set。。。那我岂不是要用5个这样的SQL语句?
...全文
756 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
山之魂2 2011-08-01
  • 打赏
  • 举报
回复
楼主MM好笨,在update 里面用Nvl不就行了
z_f_p 2011-08-01
  • 打赏
  • 举报
回复
UPDATE test SET
sale_income = nvl(sale_income,'1')
,financial_cost = nvl(financial_cost,'2')

这样行不?
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 z_f_p 的回复:]
引用 28 楼 meimeizeng 的回复:
引用 19 楼 kansousama 的回复:
是null 还是字符串空?
如果不确定的话,
值可以这样些 ISNULL(Nullif(列名,''),'默认值')

其中nullif(列名,'字符')
只要列名和字符相等的都会被换成null

看下我写的 :
UPDATE test SET
sale_income = ISNUL……
[/Quote]
不错,我也用了nvl函数,但是,"select...nvl()..."得到的也就是个视图。可怜。
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 25 楼 codeyuyu 的回复:]
oracle 可以用decode
[/Quote]
decode是什么?麻烦细说下。我是菜鸟,因为项目牵涉到这个东西,只能自己多学点了,多谢指教,十分感谢。
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 dingzongyinnihao 的回复:]
case then,蛮不错的!
[/Quote]case...when...跟select一起,得到的还是个视图,而达不到update的效果
z_f_p 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 meimeizeng 的回复:]
引用 19 楼 kansousama 的回复:
是null 还是字符串空?
如果不确定的话,
值可以这样些 ISNULL(Nullif(列名,''),'默认值')

其中nullif(列名,'字符')
只要列名和字符相等的都会被换成null

看下我写的 :
UPDATE test SET
sale_income = ISNULL(Nullif(sale_income,''……
[/Quote]

17楼不是说了么,你好像没仔细看吧!oracle 用nvl函数
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 kansousama 的回复:]
是null 还是字符串空?
如果不确定的话,
值可以这样些 ISNULL(Nullif(列名,''),'默认值')

其中nullif(列名,'字符')
只要列名和字符相等的都会被换成null
[/Quote]
看下我写的 :
UPDATE test SET
sale_income = ISNULL(Nullif(sale_income,''),'1')
,financial_cost = ISNULL(Nullif(financial_cost,''),'2')
结果报错,说是isnull是无效字符,看来oracle 里面根本不支持这个函数
  • 打赏
  • 举报
回复
case then,蛮不错的!
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 findcaiyzh 的回复:]
oracle用nvl

格式是 nvl(check_expression, replacement_value)

参考
http://cf-bill.blogspot.com/2005/10/oracle-nvl-microsoft-isnull.html
[/Quote]
你说的这个nvl语句我写过了,但是你这个是“select...nvl()....”,只要你用的是"select....",得到的都仅仅是一个视图,而不是“update...set...”在原有表中的更新效果。
codeyuyu 2011-08-01
  • 打赏
  • 举报
回复
oracle 可以用decode
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 confidenceyu 的回复:]
select isnull(字段,你要改的值)from。。
[/Quote]
我的oracle好像不支持isnull函数,呵呵
codeyuyu 2011-08-01
  • 打赏
  • 举报
回复
select isnull(字段,你要改的值)from。。
isnull 函数
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 findcaiyzh 的回复:]
我这里ISNULL没有问题

UPDATE Table_1 SET
StringTest = ISNULL(StringTest,1)


sql server 2008 enterprise
[/Quote]
看下我写的:
UPDATE test SET
sale_income = ISNULL(sale_income,1)
,financial_cost = ISNULL(financial_cost,2)
报错 说“isnull”是无效的标识符
我用的是oracle数据库。
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 findcaiyzh 的回复:]
oracle用nvl

格式是 nvl(check_expression, replacement_value)

参考
http://cf-bill.blogspot.com/2005/10/oracle-nvl-microsoft-isnull.html
[/Quote]
对,我的是oracle数据库
z_f_p 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 meimeizeng 的回复:]
引用 33 楼 z_f_p 的回复:
UPDATE test SET
sale_income = nvl(sale_income,'1')
,financial_cost = nvl(financial_cost,'2')

这样行不?

哈哈,太好了,太赞了!我早上这样尝试,报错,中午看到你的回复,照做了,通过了!哈哈,太感谢了,这位大侠,你人品好,!!!!!
[/Quote]

呵呵,楼主人品也很好!
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 meimeizeng 的回复:]
引用 34 楼 jbnbear 的回复:
楼主MM好笨,在update 里面用Nvl不就行了

太赞了,成功!!给分!!!!!
[/Quote]
不好意思,我这里分数不多...太多帮助我的人了,可是我这最多只有40分。
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 jbnbear 的回复:]
楼主MM好笨,在update 里面用Nvl不就行了
[/Quote]
太赞了,成功!!给分!!!!!
meimeizeng 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 z_f_p 的回复:]
UPDATE test SET
sale_income = nvl(sale_income,'1')
,financial_cost = nvl(financial_cost,'2')

这样行不?
[/Quote]
哈哈,太好了,太赞了!我早上这样尝试,报错,中午看到你的回复,照做了,通过了!哈哈,太感谢了,这位大侠,你人品好,!!!!!
a344586704 2011-07-22
  • 打赏
  • 举报
回复
忽忽 还是来加点人气。。。
meimeizeng 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yujia4616 的回复:]
UPDATE 表名 SET
A = ISNULL(A,1)
,B = ISNULL(B,2)
,C = ISNULL(C,3)
,D = ISNULL(D,4)
WHERE 条件
[/Quote]

我仿照你这样写了下:
UPDATE test SET
sale_income = ISNULL(sale_income,1)
,financial_cost = ISNULL(financial_cost,2)
报错 说“isnull”是无效的标识符
加载更多回复(17)

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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