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。
其他: 对系统时间的运算区别、 字符串转整型 、字符串转日期 、补零函数 (如果有需要,可自行百度细节)
此文章记录的是本人修改项目在不同数据库下运行遇到的兼容问题,希望对大家有所帮助,也方便自己以后做同样任务的参考。