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

oracle数据库兼容mysql的差异写法

2016-05-16 15:25 435 查看
  1.sysdate改为sysdate(),或者now();

  2.nvl(expr1,expr2) 改为IFNULL(expr1,expr2)

    nvl2(expr1,expr2,expr3)改为 IF(expr1,expr2,expr3);

  3.to_date('19000101000000','yyyymmddhh24miss')改为select str_to_date('1900-01-01 00:00:00','%Y-%m-%d %H:%i:%s'),写法略有差异:
    date_format(date,'%Y-%m-%d') -------------->oracle中的to_char();
    str_to_date(date,'%Y-%m-%d') -------------->oracle中的to_date();
    说明:
    %Y:代表4位的年份
    %y:代表2为的年份
    %m:代表月, 格式为(01……12)
    %c:代表月, 格式为(1……12)
    %d:代表月份中的天数,格式为(00……31)
    %e:代表月份中的天数, 格式为(0……31)
    %H:代表小时,格式为(00……23)
    %k:代表 小时,格式为(0……23)
    %h: 代表小时,格式为(01……12)
    %I: 代表小时,格式为(01……12)
    %l :代表小时,格式为(1……12)
    %i: 代表分钟, 格式为(00……59)

    %r:代表 时间,格式为12 小时(hh:mm:ss [AP]M)
    %T:代表 时间,格式为24 小时(hh:mm:ss)

    %S:代表 秒,格式为(00……59)
    %s:代表 秒,格式为(00……59)

  4.Oracle截取字符串的函数为:substr(字段名,起始位置,字符串长度) 起始位置可从0开始,截取结果和从1开始一样;

    MySql截取字符串的函数为:substring(字段名,起始位置,字符串长度) 起始位置必须从1开始,0开始不能获取到数据;

  5.MySql left join不能用+号代替;
  6.连接字符串在Oracle中用|| ,SqlServer中用+,MySQL中用concat('a','b','c');

  7.ORACLE: select INSTR('sdsq','s',2) value from dual(要求从位置2开始)
    MYSQL: select INSTR('sdsq','s') value(从默认的位置1开始);

  8.instr('abcdefg', 'ab')改为locate('ab', 'abcdefg'),名字改变,参数位置互换;

  9.length()改为char_length();

  10.TO_NUMBER('123')改为CAST("123" AS SIGNED INTEGER),带符号整型;

  11.ADD_MONTHS(sysdate, 2)改为DATE_ADD(sysdate(), interval 2 month);

  12.MySql函数:DATEDIFF(date1,date2)两个日期相减;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: