Sql Server和Oracle语法对比

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1create table SYS.CMS_CASE_FEE(

CASE_ID NUMBER(15,0) NOT NULL,

SOURCE_KIND nvarchar2(1) NOT NULL,

SEQ_NO NUMBER(15,0) NOT NULL ,

FEE_KIND1 nvarchar2(5) NULL,

FEE_AMT1 NUMBER(15,1) NULL,

FEE_KIND2 nvarchar2(5) NULL,

FEE_AMT2 NUMBER(15,1) NULL,

FEE_KIND3 nvarchar2(5) NULL,

FEE_AMT3 NUMBER(15,1) NULL,

PRIMARY KEY(CASE_ID,SEQ_NO,SOURCE_KIND) )

2栏位自增:

1 创建表(create table)

create table test

(

autoid number(10,0)

......

CONSTRAINT test PRIMARY KEY(autoid)

)

2 建立序列(create sequence)

create sequence seq_test_autoid increment by 1 start with 1 3 插入数据(insert data)

insert into test values(seq_test_autoid.nextval,......)

3Oracle 中的表名和列名可以包括字母,数字和下划线,名字长度为1-30个字符.

4Oracle 中定义变量及变量使用:

declare

var1 number;

var2 nvarchar2(10):='test';--初始化

var3 nvarchar2(10);

begin

--处理语句

select 'hello' into var3 from dual;

var3:='test';

insert into tablename(......) values(var1,var2,var3); end;

中传多个SQL语句到Oracle中执行:

begin

--执行语句

insert into tablename(......) values(var1,var2,var3); insert into tablename(......) values(var1,var2,var3); end;

6在执行insert语句时,如果db中的栏位类型为data类型,不能像sql server中那样insert字符类型的数据,

要将此转化为date类型,才可进行新增操作

如:

sql server:

insert into table1(clomn1,clomn2)values(12,'2006/01/02')

orcal:

insert into

table1(clomn1,clomn2)values(12,to_date('2006/01/02','yyyy/mm/dd'))

0.07Oracle 中文占3个字节问题:

1 存在表中的欄位類型為Nvarchar2的中文还是占2个字节.

select lengthb(strword) from word_test --结果:8

( 表word_test存有一条记录,strword2栏位值位:"汉汉汉汉",lengthb()为取字节长度函数).

2 存在表中的欄位類型為varchar2(varchar)的中文还是占3个字节.

select lengthb(strword) from word_test --结果:12

( 表word_test存有一条记录,strword2栏位值位:"汉汉汉汉",lengthb()为取字节长度函数).

3 字符串中中文占3个字节.

select lengthb('汉汉汉汉') from word_test --结果:12

4 按字符长度处理栏位(如:SUBSTR()等函数)处理栏位和中文字串时处理方式一样.

select SUBSTR('汉汉汉汉',1,3) from dual --结果:汉汉汉

select SUBSTR(strword,1,3) from word_test --结果:汉汉汉

5 按字节长度处理栏位(如:SUBSTRB()按字节截取)处理栏位和中文字串时方式有差异:

select SUBSTRB('汉汉汉汉',1,4) from dual --结果:汉

select SUBSTRB(strword,1,4) from word_test --结果:汉汉(strword

欄位類型位Nvarchar2)

select SUBSTRB(strword,1,4) from word_test --结果:汉汉(strword 欄位類型位varchar2(varchar))

8grant create any table to cms --解決建立臨時表的權限問題create or replace procedure cms.lucytest4 is

begin

execute immediate 'CREATE GLOBAL TEMPORARY TABLE lucyT4 (

pid nvarchar2(3),

pname nvarchar2(10)

) ON COMMIT delete ROWS';

execute immediate 'insert into lucyT4 values(''001'',''A1'')'; execute immediate 'SELECT * FROM lucyT4';

--execute immediate 'DELETE * FROM lucyT4';

execute immediate 'DROP TABLE lucyT4';

end;

go

begin

cms.lucytest4();

end;

9查询表中TREE_ID栏位最大的值,然后加1,产生最大的ID:

select right('00000' + cast((select isnull(max(TREE_ID),0) + 1 from CMS_Problem_Data) as varchar),5) AS TREE_ID

转换方式:

SELECT

SUBSTR('00000' || TO_CHAR(NVL(MAX(TREE_ID),0) + 1)

,LENGTH('00000' || TO_CHAR(NVL(MAX(TREE_ID),0) + 1))-4

,LENGTH('00000' || TO_CHAR(NVL(MAX(TREE_ID),0) + 1))

) AS TREE_ID

FROM

CMS_PROBLEM_DATA

10栏位排序:

SQL Server 以某栏位升序排序,则会将栏位值为"Null"的数据排在最前面. 而 Oracle 以某栏位升序排序,则会将栏位值为"Null"的数据排在最后面.

SQL Server中的查询条件不区分全角,半角;

Oracle中的查询条件区分全角,半角.

如条件:WHERE USER_ID = '730097'或WHERE USER_ID = '730097'

相关文档
最新文档