数据库特殊函数区别

来源:互联网 发布:淘宝优惠券免费领取 编辑:程序博客网 时间:2024/06/14 09:55
1. char
(1)db2
number to char:
char(123)='123'
char(0123)='123'
char(123.00)='123.00'
char(0123.)='0123.'
char(0123.00)='0123.00'
datetime to char:
char(to_date('2009-09-23','yyyy-MM-dd'))='2009-09-23-00.00.00.000000'
char(to_date('2009-09-23 12:13:14','YYYY-MM-DD HH24:MI:SS'))='2009-09-23-12.13.14.000000'
(2)sqlserver2000
number to char:
convert(varchar,123)='123'
convert(varchar,0123)='123'
convert(varchar,123.00)='123.00'
convert(varchar,0123.)='123'
convert(varchar,0123.00)='123.00'
datetime to char:
convert(varchar,convert(datetime,'2009-09-23',120),120)='2009-09-23 00.00.00'
convert(varchar,convert(datetime,'2009-09-23 12:13:14',120),120)='2009-09-23 12:13:14'
注:只有整型数据转换为字符时,行为一致
(3)oracle
to_char(123)='123'
to_char(0123)='123'
to_char(123.00)='123'
to_char(0123.)='123'
to_char(0123.00)='123'
(4)mysql
concat(123)='123'
concat(0123)='123'
concat(123.00)='123.00'
concat(0123.)='123'
concat(0123.00)='123.00'

2. integer
(1)db2
number to integer:
integer(123.1)=123
integer(0123)=123
integer(123.9)=123
char to integer:
integer('123')=123
(2)sqlserver
number to integer:
convert(integer,123.1)=123
convert(integer,0123)=123
convert(integer,123.9)=123
char to integer:
convert(integer,'123')=123
注:函数行为一致
(3)oracle
自动转换
(4)mysql
自动转换

3. timestamp
(1)db2
timestamp('1921-09-21 12:23:34')='1921-09-21 12:23:34.000000'
timestamp('1921-09-21 12:23:34.123')='1921-09-21 12:23:34.123000'
timestamp('1921-09-21 12:23:34.123456')='1921-09-21 12:23:34.123456'
(2)sqlserver
convert(datetime,'1921-09-21 12:23:34',120)='1921-09-21 12:23:34.000'
convert(datetime,'1921-09-21 12:23:34.123',120)='1921-09-21 12:23:34.123'
convert(datetime,'1921-09-21 12:23:34.123456',120) //报错
注:只有微秒为6位时,函数行为不一致
(3)oracle
to_timestamp('1921-09-21 12:23:34','YYYY-MM-DD HH24:MI:SS.FF6')
to_timestamp('1921-09-21 12:23:34.123','YYYY-MM-DD HH24:MI:SS.FF6')
to_timestamp('1921-09-21 12:23:34.123456','YYYY-MM-DD HH24:MI:SS.FF6')
(4)mysql
timestamp('1921-09-21 12:23:34')='1921-09-21 12:23:34'
timestamp('1921-09-21 12:23:34.123')='1921-09-21 12:23:34.123000'
timestamp('1921-09-21 12:23:34.123456')='1921-09-21 12:23:34.123456'

4. to_date
(1)db2
to_date('1921-09-21 12:23:34','YYYY-MM-DD HH24:MI:SS')='1921-09-21 12:23:34.000000'
to_date('1921-09-21 12:23','YYYY-MM-DD HH24:MI')='1921-09-21 12:23:00.000000'
to_date('1921-09-21 12','YYYY-MM-DD HH24')='1921-09-21 12:00:00.000000'
to_date('1921-09-21','YYYY-MM-DD')='1921-09-21 00:00:00.000000'
(2)sqlserver
convert(datetime,'1921-09-21 12:23:34',120)='1921-09-21 12:23:34.000'
convert(datetime,'1921-09-21 12:23',120)='1921-09-21 12:23:00.000'
convert(datetime,'1921-09-21 12',120) // 报错
convert(datetime,'1921-09-21',120)='1921-09-21 00:00:00.000'
(3)oracle
与db2一致
(4)mysql
date_format('1921-09-21 12:23:34','%Y-%m-%d %T')='1921-09-21 12:23:34'
date_format('1921-09-21 12:23','%Y-%m-%d %T')='1921-09-21 12:23:00'
date_format('1921-09-21 12','%Y-%m-%d %T')='1921-09-21 12:00:00'
date_format('1921-09-21','%Y-%m-%d %T')='1921-09-21 00:00:00'

5. locate
(1)db2
locate('N','ABC')=0
locate('N','ABNCNE')=3
locate('AB','ABC')=1
locate('N','ABNCNE',4)=5

locate('人','男人是人')=3
locate('人','男人是人',4)=7
(2)sqlserver
charindex('N','ABC')=0
charindex('N','ABNCNE')=3
charindex('AB','ABC')=1
charindex('N','ABNCNE',4)=5

charindex('人','男人是人')=2
charindex('人','男人是人',4)=4
注:db2函数按字节处理,sqlserver按字符处理
(3)oracle
instr('ABC','N')=0
instr('ABNCNE','N')=3
instr('ABC','AB')=1
instr('ABNCNE','N',4)=5

instr('男人是人','人')=2 
instr('男人是人','人',4) =4
注:instr函数按字符处理

instrb('ABC','N')=0
instrb('ABNCNE','N')=3
instrb('ABC','AB')=1
instrb('ABNCNE','N',4)=5
instrb('男人是人','人')=3 
instrb('男人是人','人',4) =7
注:instrb函数按字节处理
(4)mysql
与db2一致

6. substr
(1)db2
substr('ABCDE',1)='ABCDE'
substr('ABCDE',1,2)='AB'
substr('ABCDE',2,4)='BCDE'
substr('ABCDE',5)='E'

substr('我们是好人',1)='我们是好人'
substr('我们是好人',2) // 乱码
substr('我们是好人',3)='们是好人'
(2)sqlserver
substring('ABCDE',1,5)='ABCDE'
substring('ABCDE',1,2)='AB'
substring('ABCDE',2,4)='BCDE'
substring('ABCDE',5,5)='E'

substring('我们是好人',1,5)='我们是好人'
substring('我们是好人',2,5)='们是好人'
注:db2函数按字节处理,sqlserver按字符处理,且必须是3个参数
(3)oracle
substr('ABCDE',1)='ABCDE'
substr('ABCDE',1,2)='AB'
substr('ABCDE',2,4)='BCDE'
substr('ABCDE',5)='E'

substr('我们是好人',1)='我们是好人'
substr('我们是好人',2)='们是好人'
substr('我们是好人',3)='是好人'
substr('我们是好人',4)='好人'
注:substr按字符处理

substrb('ABCDE',1)='ABCDE'
substrb('ABCDE',1,2)='AB'
substrb('ABCDE',2,4)='BCDE'
substrb('ABCDE',5)='E'

substrb('我们是好人',1)='我们是好人'
substrb('我们是好人',2)='们是好人'
substrb('我们是好人',3)='们是好人'
substrb('我们是好人',4)='是好人'
注:substrb按字节处理
(4)mysql
substring('ABCDE',1)='ABCDE'
substring('ABCDE',1,2)='AB'
substring('ABCDE',2,4)='BCDE'
substring('ABCDE',5)='E'

substring('我们是好人',1)='我们是好人'
substring('我们是好人',2) // 乱码
substring('我们是好人',3)='们是好人'
注: substring按字节处理

7. length
(1)db2
length('ABC')=3
length('好人')=4
length('ABC ')=4 //一个空格
length('好人  ')=6 //两个空格
(2)sqlserver
len('ABC  ')=3
len('好人')=2
len('ABC ')=3
len('好人  ')=2
len(' ABC')=4
注: db2按字节计算,sqlserver按字符(而不是字节)计算,其中不包含尾随空格
(3)oracle
length('ABC')=3
length('好人')=2
length('ABC ')=4 //一个空格
length('好人  ')=4 //两个空格
注:length按字符计算

lengthb('ABC')=3
lengthb('好人')=4
lengthb('ABC ')=4 //一个空格
lengthb('好人  ')=6 //两个空格
注:lengthb按字节计算
(4)mysql
与db2一致

8. 字符串连接
(1)db2
'abc' || '123'
concat('abc','123')
(2)sqlserver
'abc' + '123'
(3)oracle
'abc' || '123'
concat('abc','123')
(4)mysql
concat('abc','123')
原创粉丝点击