扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Oracle与Sql server都遵循SQL-92标准:
创新互联:成立于2013年为各行业开拓出企业自己的“网站建设”服务,为上1000家公司企业提供了专业的成都网站制作、网站设计、网页设计和网站推广服务, 定制网站开发由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。
区别如下:
1.Oracle中表名,字段名,存储过程名,变量名不能超过30个字符串长度。
2.Oracle中不支持Top 语法。使用whererownum n 代替。但需要注意如果在Top前有排序的操作,则需要先排序在利用rownum取得。
3.Oracle中光标的使用与SqlServer中有挺大差别,主要是在循环控制方面不一致。
在Oracle中如果某列是Date类型,那么它默认的格式是yyyy-MM-dd,如果使用where colDate = ‘2005-06-08 17:14:57’就会出错,‘2005-06-08’可以。如果此时需要精确比较时间(小时,分,秒),可以采用下列方法:TO_DATE('2005-6-8 17:14:57','yyyy-mm-dd hh24:mi:ss')。由于Oracle和SQLServer在DateTime上对SQL标准的拓展实现方式不同,因此不能用同一个SQL实现。
4.Oracle中的TimeStamp(时间戳)与SqlServer中的差别很大。SqlServer中的TimeStamp是二进制格式存储在数据库中,可以将DataSet中的这个字段类型设定为base64Binary类型。Oracle中的TimeStamp是时间格式存储的。因此,无法用同一个DataSet既装载SqlServer的TimeStamp,有装载Oracle的TimeStamp.由于在应用程序中很少用到这个值,因此可以不检索这个字段。
5.Oracle中的TimeStamp不能像SqlServer在传入数据的时候自动填充,可以设定默认值systimestamp来实现类似功能。
6.Oracle中没有Boolean的字段类型,可以用intger或者char代替SqlServer中的bit类型。
7.Oracle中会将””空字符串当多NULL处理,也就是说,当应用程序往数据库中插入一个空字符串时,实际数据库会尝试插入一个NULL。如果这个字段是NOTNULL类型,那么就会出错,这种情况下可以用别的默认值代替空字符串。当从SqlServer导入数据到Oracle的时候,在NOTNULL列上的空字符串会导致导出操作失败。此时可以在导出向导中手工修改SQL脚本,将空字符串设定成一个特殊值。
我是这样做的,参考如下语句
select 'insert into table(column,column,column) values('+id+',''' + name+''','''+url+''')'
from table
其中,两个单引号表示一个引号的意思。生成数据列表后样式
insert into table(column,column,column) values(00101,'XXXXX,'XXXXXX')
insert into table(column,column,column) values(00102,'XXXXX','XXXXXX')
复制语句 执行即可。
我当初测试系统配置数据就是这样弄到正式机的,将数据弄成文本形式的SQL,仅供参考。
sqlserver 中 没有 || 和 的吧。
但是java,C等编程语言中有他,||表示 或, 表示 与。
对应sqlserver sql语句中的 or 和 and。
or 表示有一种情况真,表达式就为真,比如if(1==2||2==2){...},这时候if表达式就为真。if(1==2||1==3){...}这时候if表达式直为假。
and表示两种情况都为真,表达式为真,比如if(1==12==2){},这时候if表达式为真,其他情况为假。
SQL Server从2005开始就支持row_number over一系列的分析函数,故应该是可以执行的。
猜测:不是SQL Server版本的问题,可能是你的数据兼容级别为SQL Server 2000 (80)的,而SQL Server 2000对分析函数是不支持的。
或者,使用更新的版本。我的就是Microsoft SQL Server Developer Edition, 9.00.4035.00
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流