社区
C#
帖子详情
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
打赏
收藏
SQL 空值替换问题
请问下:我现在想做到:一张数据库表(100条记录),有A,B,C,D,E这5个字段,每个字段中都有很多空值,我现在用我自己的方法把填补缺失的值计算出来,要替换这些空值,比如:A字段的空值替换成1,B字段的空值替换成2,C字段的空值替换成3,D字段的空值替换成4,E字段的空值替换成5.我怎么样用比较简便的语句,立刻执行出来(不需要视图),把缺失值填补到空缺的栏目里。如果用update...set。。。那我岂不是要用5个这样的SQL语句?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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 里面根本不支持这个函数
我说我行就是行
2011-08-01
打赏
举报
回复
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)
Visual FoxPro中的
空值
(NULL值)
问题
(2005年)
空值
(NULL值)是关系数据库中的一个重要概念,我们可以利用
空值
进行数据查询.由于
空值
不是任何意义上的数据,所以向数据库表或自由表中输入
空值
的方法与输入其他类型数据的方法不同,不论是用 EDIT、CHANGE命令以及在BROWSE浏览器窗口中对表记录进行编辑和修改,还是用APPEND或INSERT命令追加或插入记录时都不能真正输入NULL值.本文给出了向表中字段输入
空值
的正确方法,并指出利用其他输入数据的方法输入
空值
时会出现的错误.
【
SQL
SERVER】
sql
如何
空值
替换
成null?
工作中,我们有时要提前将源数据中的
空值
处理为null,以此方便后期字段的比对,现纯两种方式转换。1.MEMO=NULLIF(MEMO,'')2.MEMO=CASE WHEN Memo='' THEN NULL ELSE Memo END
sql
将
空值
替换
为NULL
批量
替换
sql
中
空值
数据为null
SQL
空值
替换
ISNULL
使用指定的值
替换
NULL ISNULL用来判断当所选列是
空值
的时候你打算用什么值去
替换
ISNULL ( check_expression , replacement_value )SELECT CASE WHEN m.[办结日期] IS NULL THEN 1900 ELSE YEAR(m.[办结日期]) END AS 合作结算明细_办结年份,ISNULL(m.[付款金额], 0)
sql
替换
null
空值
1.isnull
替换
select keyId,isnull(info,‘
替换
null值’) as info from test go 2.case when
替换
CASE WHEN org2.orgshortname IS NOT NULL THEN org2.orgshortname ELSE org3.orgshortname END as INSORGNAME, 3.coalesce
替换
coalesce(iam.invoiceno ,'-') as COUNTNO, ...
C#
110,552
社区成员
642,562
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章