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

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

  1. oracle中取别名时要用双引号,否则全大写——(mysql加不加引号都一样,取决于写的时候是大小写),oracle–而这双引号不能直接select ”Aa“ from dual,只能做别名时用双引号(别名不用双引号则默认都大写且别名不能使用单引号)。单引号可以直接select ‘Aa’ from dual,单引号再做条件时是区分大小写的。

  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也可以,相同的会被直接忽略。

待补充。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值