create table a (a nvarchar2(3) default '');怎么改? create table a (a nvarchar2(3) default Null null); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 但是这句话在两个版本一个对一个不对。我想不应该改sql吧。应该处理字符集的问题吧?而且'',和null。这两个付职应该是完全不同的吧? create table a (a nvarchar2(3) default null);这样就行了 国家字符集问题,有的字符集是用两个字符表示一个字符的,像 汉字你把nvarchar2改为varchar2应该就没有问题了 create table a (a nvarchar2(3) default null); 与create table a (a nvarchar2(3) default '' null);的意思可是不一样得呀,楼上 to xbm2008(大道至简) 这种没用过,能解释一下吗 ORACLE 中'' 被解析成NULL了。楼主的写法create table a (a nvarchar2(3) default '' null);default 值就是等于NULL create table a (a nvarchar2(3) default Null null);第一个NULL是default 的值,就是默认为NULL后面的NULL是表示字段可以为NULL,是字段的约束 我现在的情况是这样的: 数据结构是一个成型系统,以sqlserver为数据库做好的.(现在需要同时支持oracle)表结构多而复杂,以上脚本是批量转换过来的。如果我手工调整sql将是非常不现实的一个做法.但经过测试,这种写法在9i完全通过,但8i中提示如上错误. 所以想请教大家,是否可以通过调整字符集的方式,解决这个问题?怎么做?小妹先谢! 在SQLSERVER中''是一个空格的意思在ORACLE中''是NULL的意思即使你在9I中执行create table a (a nvarchar2(3) default '' null);成功了也和和SQLSERVER中意思不一样了。应为SQLSERVER中字段default 的值是空格,到ORACLE中变成默认NULL了。我们以前平台移转的策略是改成:create table a (a nvarchar2(3) default ' ' null); 是create table a (a varchar2(3) default ' ' null); 呵呵,是这样的啊,没看过来,如果是:create table a (a nvarchar2(3) default null not null);这样的话我就知道了,以前我用SQL SERVER都是把后一个NULL写在DEFAULT的前面。所以一时间没看出是什么意思 TO 楼主,你可以用文本替换 把default '' null全部替换成default null null to:hippie1024(痞子)感谢你的经验策略,再请教一下,如果''被解析为null,我认为这一句,前后矛盾就应该不成立啊?但是结果是成立的。为什么?create table a(a varchar2 default '' not null);create table a(a varchar2 default null not null);两句都成立,为什么啊?我不明白,a字段我不让其为空,那么按说,他不能为null,如果是' '这倒是还能理解。 呵呵,这点我也觉得比较奇怪的,这种矛盾应该ORACLE避免么。就这样理解吧,default null 表示在为对字段赋值情况下ORACLE作的默认赋值操作。后面的not null 是字段的一个约束,在赋值的时候会做检查。create table a(a varchar2 default null not null);这样的句子其本身和create table a(a varchar2 not null);是一样的等于没有默认值。(在没有给默认值的情况下ORACLE赋值就是NULL)在INSERT的时候不对该字段赋非空值的话就会报错的。 linux 上oracle 問題 一道数据库题,高手请帮忙,给分 各位高手来帮忙写一个二维SQL查询语句 oracle中有没有sql中类似的checknum函数啊? 关于程序查询ORACLE库ERROR的问题 大家推荐一本orcale初级书啊! 阿里巴巴公司DBA笔试题 oracle安装? 集合类型请教: 菜鸟求助存储过程 ?该怎么优化呢,在加与不加字段之间徘徊? 关于null的问题?
而且'',和null。这两个付职应该是完全不同的吧?
你把nvarchar2改为varchar2应该就没有问题了
的意思可是不一样得呀,楼上
楼主的写法
create table a (a nvarchar2(3) default '' null);
default 值就是等于NULL
第一个NULL是default 的值,就是默认为NULL
后面的NULL是表示字段可以为NULL,是字段的约束
数据结构是一个成型系统,以sqlserver为数据库做好的.(现在需要同时支持oracle)表结构多而复杂,以上脚本是批量转换过来的。如果我手工调整sql将是非常不现实的一个做法.
但经过测试,这种写法在9i完全通过,但8i中提示如上错误.
所以想请教大家,是否可以通过调整字符集的方式,解决这个问题?怎么做?
小妹先谢!
在ORACLE中''是NULL的意思
即使你在9I中执行
create table a (a nvarchar2(3) default '' null);
成功了也和和SQLSERVER中意思不一样了。
应为SQLSERVER中字段default 的值是空格,到ORACLE中变成默认NULL了。我们以前平台移转的策略是改成:
create table a (a nvarchar2(3) default ' ' null);
create table a (a nvarchar2(3) default null not null);这样的话我就知道了,以前我用SQL SERVER都是把后一个NULL写在DEFAULT的前面。所以一时间没看出是什么意思
感谢你的经验策略,再请教一下,如果''被解析为null,我认为这一句,前后矛盾就应该不成立啊?但是结果是成立的。为什么?
create table a(a varchar2 default '' not null);
create table a(a varchar2 default null not null);
两句都成立,为什么啊?我不明白,a字段我不让其为空,那么按说,他不能为null,如果是' '这倒是还能理解。
就这样理解吧,default null 表示在为对字段赋值情况下ORACLE作的默认赋值操作。
后面的not null 是字段的一个约束,在赋值的时候会做检查。
create table a(a varchar2 default null not null);
这样的句子其本身和create table a(a varchar2 not null);
是一样的等于没有默认值。(在没有给默认值的情况下ORACLE赋值就是NULL)
在INSERT的时候不对该字段赋非空值的话就会报错的。