您的位置:首页 > 数据库 > Oracle

oracle与mysql操作上的区别

2020-05-07 04:12 1236 查看

索引

  • 二、字符串
  • 三、空值 null 相关
  • 四、其他
  • 一、日期时间

    日期时间截取

    //oracle TRUNC(date[,fmt])可截取日期和时间
    trunc(sysdate, 'mm');
    
    //mysql DATE(date) 只截取日期部分
    DATE(datestring)

    格式化时间

    //oracle TO_CHAR,TO_DATE
    SELECT TO_CHAR(SYSDATE,'yyyy-MM-dd HH24:mi:ss') FROM dual
    SELECT TO_DATE('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') FROM dual
    
    //mysql STR_TO_DATE,DATE_FORMAT,CAST
    //字段类型是varchar,用DATE_FORMAT;字段类型是时间,用STR_TO_DATE
    SELECT STR_TO_DATE( '2017-02-09 15:25:46.635','%Y-%m-%d %H:%i:%s') FROM DUAL;//字符串转时间类型
    SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%S') FROM dual;//时间类型转字符串
    SELECT CAST(NOW() AS DATETIME) FROM DUAL

    系统时间

    //oracle
    SYSDATE
    
    //mysql
    NOW()

    时间间隔

    //oracle 两日期间的月份数
    MONTHS_BETWEEN
    
    //mysql 两日期间的天数
    DATEDIFF

    insert日期

    //oracle
    需要把时间格式化
    
    //mysql
    可直接插入时间字符串

    日期运算

    //oracle 日期d加上n个月
    ADD_MONTHS(d,n)
    
    //mysql 日期加上几天或几个小时
    DATE_ADD(date,INTERVAL expr type)

    二、字符串

    字符串拼接

    //oracle
    str1||str2||str3
    
    //mysql
    concat(str1,str2,…)

    字符集转换为char

    //oracle 参数一:要转换的字符串,参数二:字符串的字符集。
    TO_CHAR( string-expression [, source-charset-name ] )
    
    //mysql 如果oracle的TO_CHAR未指定参数二
    CAST( string-expression AS CHAR )

    截取字符串

    //oracle 截取位置从0开始
    substr()
    
    //mysql 截取位置从1开始
    substr()
    substring()
    
    //从开始位置st截取到最后
    substr(str,st)
    //从位置st截取到位置en
    substr(str,st,en)

    字符串变数值

    //oracle
    TO_NUMBER('123'):
    
    //mysql
    cast( '123' as SIGNED INTEGER)

    正则模式查询

    //oracle regexp_like()
    select * from tb where regexp_like(name,’z’);
    
    //mysql regexp
    select * from tb where name regexp ’z’;

    三、空值 null 相关

    判断是否为空

    第一个参数为空,就返回第二个参数
    相当于 java 中的三目运算符 String s = a != null ? a : " ";

    //oracle nvl
    SELECT nvl(expr1,expr2)
    
    //mysql ifnull
    select ifnull(expr1,expr2);

    空值 null 排序(Order by 语法)

    oracle
    order by colum asc :null默认被放在最后
    order by colum desc :null默认被放在最前
    mysql
    order by colum asc :null默认被放在最前
    order by colum desc :null默认被放在最后

    //oracle
    order by colum asc nulls first //强制null放在最前,不为null的按声明顺序[asc|desc]进行排序
    order by colum asc nulls last //强制null放在最后,不为null的按声明顺序[asc|desc]进行排序
    
    //mysql
    ORDER BY colum asc IF(ISNULL(colum),0,1) //null被强制放在最前,不为null的按声明顺序[asc|desc]进行排序
    ORDER BY colum asc IF(ISNULL(colum),1,0) //null被强制放在最后,不为null的按声明顺序[asc|desc]进行排序

    四、其他

    条件判断

    如果 id = admin,返回1,否则返回0

    //oracle decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
    //如果条件等于值1->返回值1,条件等于值2->返回值2,...,没有匹配的值->缺省值
    DECODE(id, admin, 1, 0)
    
    //mysql IF(expr1,expr2,expr3) 如果expr1为true,返回expr2,否则返回expr3
    IF (id = admin, 1, 0)

    取前几条

    //oracle ROWNUM
    SELECT column_name(s) FROM table_name LIMIT number
    
    //mysql LIMIT
    SELECT column_name(s) FROM table_name WHERE ROWNUM <= number

    自增加

    //oracle
    CREATE SEQUENCE 字段名
    
    //mysql
    AUTO INCREMENT

    catOneTwo 原创文章 51获赞 41访问量 2万+ 关注 私信
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: