首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 【求助】nvl函数使用 [已结贴,结贴人:gong_max]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gong_max
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-21 10:34:31 楼主
    有一张表tableA有以下字段
    f_id,f_sbm,f_sbip,f_bz(char型)
    其中f_bz字段是可为空的,所以查询的时候我使用nvl函数给它显示一个值。
    select nvl(f_bz,'test') from tableA where f_id = 6

    但是这条语句的执行结果显示,f_bz字段还是为空。并且我把这条语句放到pl/sql块中发现还是报‘未找到数据’这个错误。这是什么原因,大家帮帮忙。
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hebo2005
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

      2

    发表于:2008-08-21 10:41:021楼 得分:10
    可能不是NULL,有空格或者换行之类的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gong_max
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:41:362楼 得分:0
    对不起,说错了。
    select f_id,f_sbm,f_bz from tableA where f_id = 6;查询这条语句是有记录的。只不过f_bz字段为空。
    但是修改之后
    select f_id,f_sbm,nvl(f_bz,'hehe') from tableA where f_id = 6
    这条语句的查询结果和上条语句是一样的。这是为什么
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gong_max
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:45:323楼 得分:0
    引用 1 楼 hebo2005 的回复:
    可能不是NULL,有空格或者换行之类的

    对啊,我怎么没考虑到这种情况。谢谢
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fxianxian
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 10:56:194楼 得分:0
    你的TABLEA中没有f_id = 6这条记录!
    你或者把你的语句改一下啊!
    select nvl(max(f_bz),'test') from tableA where f_id = 6
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kaoziji
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 14:59:065楼 得分:0
    用length(f_bz)确认一下内容的长度
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hhfwyl
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 16:36:116楼 得分:0
    欢迎加入oracle qq群9701750
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rockywu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 10:12:327楼 得分:0
    引用 3 楼 gong_max 的回复:
    引用 1 楼 hebo2005 的回复:
    可能不是NULL,有空格或者换行之类的

    对啊,我怎么没考虑到这种情况。谢谢

    LZ已考虑到了.....还有也可像LS 用length得到长度判定一下.......
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fzm2008
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-22 17:14:408楼 得分:0
    length() 判断一下
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sulins
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-23 13:33:309楼 得分:10
    注意:f_bz(char型)

    解决方法:使用trim函数。

    SQL语句:
    SQL code
    select nvl(trim(f_bz), 'test') from tableA where f_id = 6

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • parellax
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 16:22:2410楼 得分:0
    或者前面都加一个别名, nvl(a.max(f_bz),'test') max
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • parellax
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 16:23:0711楼 得分:0
    或者前面都加一个别名, nvl(max(a.f_bz),'test') f_bz

    前面写错了,,sorry...
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wind__dance
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 16:27:3612楼 得分:0
    有这么多高手,应该解决了吧?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Maozhj
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 10:12:2413楼 得分:0
    引用 9 楼 sulins 的回复:
    注意:f_bz(char型)

    解决方法:使用trim函数。

    SQL语句:

    SQL code
    select nvl(trim(f_bz), 'test')
    from tableA
    where f_id = 6

    这个不错,简洁明了。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved