w*r 发帖数: 2421 | 1 Oracle的sqlplus里面使用''表示的blank string似乎会被自动翻译成null, 这样的话
我要test 一个 column是blank的话怎么写???='' !=''都不太对劲儿,
今天刚发现的,一直没有注意过这个问题 | c*******e 发帖数: 8624 | 2 啥叫blank string?一个column是blank不是null么?
【在 w*r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Oracle的sqlplus里面使用''表示的blank string似乎会被自动翻译成null, 这样的话 : 我要test 一个 column是blank的话怎么写???='' !=''都不太对劲儿, : 今天刚发现的,一直没有注意过这个问题
| w*r 发帖数: 2421 | 3 null和blank是不一样的, blank只是说是一个空字符串,但是NULL是空指针嘛,何况NULL
!=NULL, 但是''==''呀
【在 c*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 啥叫blank string?一个column是blank不是null么?
| c*******e 发帖数: 8624 | 4 什么交一个空字符串?我知道比如C里面initialize什么
相当于给了把地址指到了变量,但是不是很理解数据库里面
空字符串到底是什么?
我知道null是不能和null相等的
这么说吧,如果你想插入一个空字符串你怎么做?
NULL
【在 w*r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : null和blank是不一样的, blank只是说是一个空字符串,但是NULL是空指针嘛,何况NULL : !=NULL, 但是''==''呀
| w*r 发帖数: 2421 | 5 insert into t values('');
【在 c*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 什么交一个空字符串?我知道比如C里面initialize什么 : 相当于给了把地址指到了变量,但是不是很理解数据库里面 : 空字符串到底是什么? : 我知道null是不能和null相等的 : 这么说吧,如果你想插入一个空字符串你怎么做? : : NULL
| M*****r 发帖数: 1536 | 6 You can use IS NULL/IS NOT NULL
On your original table:
If the column is defined as NOT NULL, you won't get NULL
If the column can have NULL, then, blank string is NULL (Oracle does the
conversion for a really long time)
You can also use nvl function, but may not be what you really want.
【在 w*r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : Oracle的sqlplus里面使用''表示的blank string似乎会被自动翻译成null, 这样的话 : 我要test 一个 column是blank的话怎么写???='' !=''都不太对劲儿, : 今天刚发现的,一直没有注意过这个问题
| c*******e 发帖数: 8624 | 7 你试试看是不是is null
【在 w*r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : insert into t values('');
| c*******e 发帖数: 8624 | 8 this is clear, I am not familiar with oracle, hehe
【在 M*****r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : You can use IS NULL/IS NOT NULL : On your original table: : If the column is defined as NOT NULL, you won't get NULL : If the column can have NULL, then, blank string is NULL (Oracle does the : conversion for a really long time) : You can also use nvl function, but may not be what you really want.
| w*r 发帖数: 2421 | 9 我当然知道在oracle里面这个insert会被变成null, 这正是问题所在,TNND 这太烦了,
老爷偶要null的时候当然会把null给送去表里,你丫给我自动换什么呀,这个行为几乎
和所有其他的RDBMS都不一样!
造成的结果是如果有一个java function embeded在数据库里面,送去一个空字符的时候
就会跳出null exception, 你说丫的是不是很烦? | c*******e 发帖数: 8624 | 10 前面不是说了么,设成not null就会是''了
【在 w*r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我当然知道在oracle里面这个insert会被变成null, 这正是问题所在,TNND 这太烦了, : 老爷偶要null的时候当然会把null给送去表里,你丫给我自动换什么呀,这个行为几乎 : 和所有其他的RDBMS都不一样! : 造成的结果是如果有一个java function embeded在数据库里面,送去一个空字符的时候 : 就会跳出null exception, 你说丫的是不是很烦?
| c*******e 发帖数: 8624 | 11 再说也有问题,不熟悉的人select *看一下
也不容易看出来哪个是null,哪个不是吧
我觉得你的想法比较奇怪
【在 w*r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 我当然知道在oracle里面这个insert会被变成null, 这正是问题所在,TNND 这太烦了, : 老爷偶要null的时候当然会把null给送去表里,你丫给我自动换什么呀,这个行为几乎 : 和所有其他的RDBMS都不一样! : 造成的结果是如果有一个java function embeded在数据库里面,送去一个空字符的时候 : 就会跳出null exception, 你说丫的是不是很烦?
| w*r 发帖数: 2421 | 12 设成not null也有问题,bulk insert 就出错了,bulk insert/sql loader就会把''解释
成null, 然后就有了constraint的问题,嘿嘿,这个设计反正是比较失败,string
literal ''和null本来就不是一回事儿,要仔细得区分开,哪有这种GP不通的设计,自动
把一个string literal给解释成null的?
【在 c*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 前面不是说了么,设成not null就会是''了
| c*******e 发帖数: 8624 | 13 你说你要''干啥?
【在 w*r 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 设成not null也有问题,bulk insert 就出错了,bulk insert/sql loader就会把''解释 : 成null, 然后就有了constraint的问题,嘿嘿,这个设计反正是比较失败,string : literal ''和null本来就不是一回事儿,要仔细得区分开,哪有这种GP不通的设计,自动 : 把一个string literal给解释成null的?
| w*r 发帖数: 2421 | 14 不是我要it, 是it 存在呀,都变成null让数据的load的时候有问题,那几十万条记录里
面有几行有'',为这个null还要改primary index, 要不就还要update一下,再说''变成
null传到function里面就会报错,烦不烦?
【在 c*******e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 你说你要''干啥?
|
|