Mysql和Oracle中存在的差异(小细节)

Mysql和Oracle中存在的差异(小细节)

  1. oracle中取别名时要用双引号,否则全大写——mysql加不加引号都一样

  2. oracle中的空字串 is null是true 即select 1 from dual where ‘’ is null 返回1 ,select nvl(‘’,‘NULL’) from dual 返回’NULL’。——mysql为false

    sql-server Oracle 认为空字符串为 NULL,而 SQL Server 不认为 - 如何最好地处理?-IGI (igiftidea.com)

    这一特性导致数据从其他数据库迁移到oracle中时,可能会发生问题,比如sql server非空字段存放了空字符串,而到oracle则变成了null导致报错,

    a.这时可以通过增加一列,将空字串变成Empty或等其他方式空格等表示。

    b.再或者从源头解决,在sqlserver中给对应字段添加约束check不允许存空字符串。

    c.删除oracle该字段非空约束

    如果某列存在 NULL 值时,执行非等于查询(<>/!=)会导致NULL值的结果丢失

    a.通过or条件加上is null判断 /ifnull(field,0)

  3. mysql日期与字符串可以直接进行比较

  4. 窗口函数mysql8.0之前不支持

  5. 版本查看

    mysql: select version() /@@version

    oracle:select * from product_component_version

  6. group bymysql版本在5.7及以下时,采用的是宽松模式,关闭了ONLY_FULL_GROUP_BY,即在mysql5.7版本及之前使用groupby,select中的字段不用全在group by也可以,相同的会被直接忽略。

待补充。。

你可能感兴趣的:(数据库,oracle,mysql,数据库)