Mysql与Oracle的区别(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq125281823/article/details/88288145

1.时间相减

Oracle Mysql
时间相减=天数(可能会小数) 时间相减,并不是时间值
实际是mysql的时间相减是做了一个隐式转换操作,将时间转换为整数,但并不是用unix_timestamp转换,而是直接把年月日时分秒拼起来,如2013-04-21 16:59:33 直接转换为20130421165933,由于时间不是十进制,所以最后得到的结果没有意义

要得到正确的时间相减秒值,有以下3种方法:
1、time_to_sec(timediff(t2, t1)),
2、timestampdiff(second, t1, t2),
3、unix_timestamp(t2) -unix_timestamp(t1)

2.数据转换

Oracle Mysql
to_char(,‘fm999999990,9999’) convert()/cast()/format()
format()函数返回类型是字符串,满三位会加一个逗号。
针对数字类型转换建议使用 convert或者cast函数,用法如下:
format(param, 2) (不建议)
convert(param, decimal(12,2))(建议)
cast(param as decimal(12,2))(建议)

select 0+convert(11.2,decimal(12,2)) ;  -- 12.20,严格按照格式来转换
select 0+covert(11.2,char); -- 11.2

小提示:有时候不能区分查询或者转换出来的是数字还是其他的Mysql数据类型,可以看select时候看数字偏在查询数据展示的窗口哪一边.

3.字符串截取

Oracle Mysql
substr()/substr () 可以有空格 substr()/不可以有空格

Mysql的substr函数不能写成括号和函数名之间带空格的,但是oracle就可以.
oracle的substr函数可以从0或者1开始,这两者效果都一样,但是Mysql只能从1开始截取,从0开始就是一个空

4.insert语句

Oracle Mysql
‘’/null都可以插入 ‘’/null不是一个意思

在查询和插入的时候要特别的注意

5.Mysql字符串大小写

Mysql默认不区分大小写

MySql默认查询是不区分大小写的,如果需要区分他,必须在建表的时候,Binary标示敏感的属性.

CREATE TABLE NAME(
name VARCHAR(10) BINARY
);

2、 在SQL语句中实现 SELECT * FROM TABLE NAME WHERE BINARY name='Clip';

3、 设置字符集:

utf8_general_ci --不区分大小写

utf8_bin--区分大小写

猜你喜欢

转载自blog.csdn.net/qq125281823/article/details/88288145