Mysql、Oracle、SqlServer不同数据库一些SQL语句的区别

1 篇文章 0 订阅
1 篇文章 0 订阅

1.取数据的前几条数据或中间几行数据

MySQL:使用  limit

用法:【select * from tableName limit i,n 】

参数:

  • tableName : 为数据表;

  • i : 为查询结果的索引值(默认从0开始);

  • n : 为查询结果返回的数量

例句:SELECT * from role_user limit 0,5  等价于  SELECT * from role_user limit 5  取数据的前5条, 也就是从第一条开始,往后面取5条

SELECT * from role_user limit 5,10  取数据的 6-15行  从第6条开始,往后面取10条数据 

SQL server:使用 top 

SELECT TOP 2 * FROM Person   取"Person" 表中选取前两条记录

SELECT TOP 50 PERCENT * FROM Person   从"Person" 表中选取 50% 的记录

Oracle :使用 rownum

一般情况: select * from test where rownum<=10  会取出数据的前十条数据  ,但使用order by 查询出来的就不是你想要的前十条

应该 select * from (select * from test order by statedate desc ) where rownum<=10   把排序后的结果作为数据,再取前十条

例: SELECT *  FROM (SELECT a.*, ROWNUM rn  FROM torderdetail a)  WHERE rn >= 10 AND rn <= 20   取数据的第10条到20条

 

2. 字符串的拼接

MySQL: 使用 CONCAT()函数用于将多个字符串连接成一个字符串  注:支持多个参数拼接

SqlServer: 1. 用 + 号实现字符串拼接   2.用concat()内置函数实现字符串拼接 注:SQLServer 2012及更高版本才支持conconcat()函数。

Oracle: 1. 使用 " || " 符号进行   2.用concat()内置函数实现字符串拼接   注:Oracle的CONCAT()函数只支持两个参数,不支持两个以上字符串的拼接

 

3. 获取当前系统时间

MySQL: 使用 now() 、 sysdate()  都是获取当前日期+时间,不同之处在于:now()在执行开始时值就得到了,sysdate()在函数执行时动态得到值

SqlServer:  使用 GETDATE()  获取当前日期+时间

Oracle:  使用 sysdate 获取当前日期+时间   例:SQL:select sysdate from dual   结果:2021-03-03 13:30:25

 

4.判断参数是否为NULL,并返回一个默认值

MySQL: IFNULL(参数1,参数2)   判断参数1是否为NULL,如果是,返回参数2,否则返回参数1。

SqlServer: ISNULL(参数1,参数2),判断参数1是否为NULL,如果是,返回参数2,否则返回参数1。

Oracle: NVL(参数1,参数2),判断参数1是否为NULL,如果是,返回参数2,否则返回参数1。

 

其他: 对系统时间的运算区别、 字符串转整型 、字符串转日期 、补零函数 (如果有需要,可自行百度细节)

此文章记录的是本人修改项目在不同数据库下运行遇到的兼容问题,希望对大家有所帮助,也方便自己以后做同样任务的参考。

 

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值