12
返回列表 发新帖
楼主: chencong

这些字段is nut null可是length 是0

[复制链接]
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
11#
 楼主| 发表于 2005-1-6 11:20 | 只看该作者
在8.1.6.0.0上有这个现象,
在8.1.7.4.0上,0字符的长度也为1,呵呵

使用道具 举报

回复
论坛徽章:
112
2008新春纪念徽章
日期:2008-02-13 12:43:03马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14马上有车
日期:2014-11-03 12:40:39沸羊羊
日期:2015-03-04 14:43:432015年新春福章
日期:2015-03-06 11:57:31慢羊羊
日期:2015-03-09 16:15:39
12#
发表于 2005-1-6 11:30 | 只看该作者

我的看法(仅供参考>

我个人认为,空字符串('')和NULL是一样的.

1)他们的长度一样
2)他们均同时用is null来选择

至于长度为0且not null的情况,我认为是通过第三方语言(比如pro*c或其他工具)插入的'\0'字符.

仅供参考

使用道具 举报

回复
论坛徽章:
226
BLOG每日发帖之星
日期:2010-02-11 01:01:06紫蛋头
日期:2013-01-12 23:45:222013年新春福章
日期:2013-02-25 14:51:24问答徽章
日期:2013-10-17 18:06:40优秀写手
日期:2013-12-18 09:29:10马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
13#
发表于 2005-1-6 11:30 | 只看该作者
可能是816上面的bug吧?对chr(0)的长度计算有问题。

使用道具 举报

回复
论坛徽章:
0
14#
发表于 2005-1-6 12:28 | 只看该作者
816,817上面对ascii 0的长度就是统计为0的。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
15#
发表于 2005-1-6 12:32 | 只看该作者
最初由 yangtingkun 发布
[B]

我现在不能理解长度为0的意义是什么。对于null来说,长度也是null。

SQL> select length(null) from dual;

LENGTH(NULL)
------------


SQL> select length('') from dual;

LENGTH('')
---------- [/B]


8i的文档已经说明Oracle currently treats a character value with a length of zero as null.
所以,''就是null(以下测试是816客户端连接到Oracle 9201上去做的)
A.
SQL> select 1 from dual where '' is null;

         1
----------
         1
B.
SQL> select 1 from dual where ''='';

未选定行
C.
SQL> select length('') from dual;

LENGTH('')
----------

D.
SQL> select 1 from dual where length('') is null;

         1
----------
         1


另,--------试试select length(chr(0)) from dual;
9i服务器(9201)
SQL> select length(chr(0)) from dual;

LENGTH(CHR(0))
--------------
             1
8i服务器(816)
SQL> select length(chr(0)) from dual;

LENGTH(CHR(0))
--------------
             0
偶也困惑啊,长度为0到底是虾米呢??

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2005-1-6 12:36 | 只看该作者
最初由 lastwinner 发布
[B]

8i的文档已经说明Oracle currently treats a character value with a length of zero as null.
所以,''就是null(以下测试是816客户端连接到Oracle 9201上去做的)
A.
SQL> select 1 from dual where '' is null;

         1
----------
         1
B.
SQL> select 1 from dual where ''='';

未选定行
C.
SQL> select length('') from dual;

LENGTH('')
----------

D.
SQL> select 1 from dual where length('') is null;

         1
----------
         1


另,--------试试select length(chr(0)) from dual;
SQL> select length(chr(0)) from dual;

LENGTH(CHR(0))
--------------
             1

偶也困惑啊,长度为0到底是虾米呢?? [/B]


在8.1.7.0.0以后length函数在对chr(0)做统计时,将其长度统计为0.
也可以说是8.1.7.0.以下一个小bug吧。

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
17#
发表于 2005-1-6 12:48 | 只看该作者
最初由 logzgh 发布
[B]

在8.1.7.0.0以后length函数在对chr(0)做统计时,将其长度统计为0.
也可以说是8.1.7.0.以下一个小bug吧。 [/B]


同意,虽然chr(0)是看不见的ASCII控制字符,但长度应该是1才对
不知道Oracle以后对长度为0的字符串和null要怎么处理
反正816和9201下,''就是null

java里头null和""却倒是不一样的东西.不知道Oracle如果把这俩分开处理是不是为了和java"保持一致"

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
18#
 楼主| 发表于 2005-1-6 15:04 | 只看该作者
我估计我们的这种情况,这是因为dephi的string引起的,插入了0字符,导致相关的一些问题,
因此我认为使用dephi开发的人员要当心一点,一不小心插入0字符,引起一些错误

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
19#
 楼主| 发表于 2005-1-6 15:08 | 只看该作者
各种开发语言对0字符的处理情况不一样,oracle对0字符的处理在不断的发展,我辈命苦阿

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表