Mysql、Oracle、Sql Server、达梦之间sql的差异

1:分页查询

Sql Server:

XML 复制代码
<bind name="startRow" value="(page - 1) * limit + 1"/>
<bind name="endRow" value="page * limit"/>
SELECT *
    FROM (
        SELECT ROW_NUMBER() OVER (
        <if test="sortZd!= null and sortZd!= ''">
            ORDER BY ${sortZd}
            <if test="sort!= null and sort!= ''">
                ${sort}
            </if>
        </if>
        <!-- 默认排序 -->
        <if test="sortZd == null or sortZd == ''">
            ORDER BY jy.JYSJ
        </if>
    ) AS RowNum,
        <!-- 具体的查询sql -->
) AS PagedResults
WHERE RowNum BETWEEN #{startRow} AND #{endRow}

分页Count查询:

XML 复制代码
SELECT COUNT(*) AS total_count
FROM ( 
    <!-- 具体的查询sql -->
) subquery;

Oracle:

XML 复制代码
<bind name="startRow" value="(page - 1) * limit + 1"/>
<bind name="endRow" value="page * limit"/>
SELECT * FROM (
        SELECT inn.*, ROWNUM AS rn FROM (
            SELECT * FROM ( 

            ) a
        <!-- 动态排序逻辑(if标签实现) -->
        <if test="sortZd != null and sortZd != ''">
            ORDER BY ${sortZd} 
            <if test="sort != null and sort != ''">
                ${sort}
            </if>
        </if>
        <!-- 默认排序 -->
        <if test="(sortZd == null or sortZd == '') and sort == null">
            ORDER BY FYSJ DESC
        </if>
        ) inn
        WHERE ROWNUM &lt;= #{endRow}
    )
WHERE rn &gt;= #{startRow}

分页Count查询:

XML 复制代码
SELECT COUNT(*) AS total_count
FROM ( 
    
) subquery

达梦:

XML 复制代码
<bind name="startRow" value="(page - 1) * limit"/>
        <bind name="endRow" value="limit"/>
        SELECT * FROM (

            ) a
            <if test="sortZd != null and sortZd != ''">
                ORDER BY ${sortZd}
                <if test="sort != null and sort != ''">
                    ${sort}
                </if>
            </if>
            <if test="sortZd == null or sortZd == ''">
                ORDER BY BATJ_XGRZ.xgsj DESC
            </if>
OFFSET #{startRow} ROWS FETCH FIRST #{endRow} ROWS ONLY

分页Count查询:

XML 复制代码
SELECT COUNT(*) AS total_count
FROM ( 
    
) subquery

mysql:

XML 复制代码
SELECT * FROM table<br>ORDER BY col<br>LIMIT 10 OFFSET 10;

2:时间处理

功能 Oracle SQL Server 达梦 MySQL
日期格式化 TO_CHAR(date, 'YYYY-MM-DD') CONVERT(VARCHAR, date, 23) TO_CHAR(date, 'YYYY-MM-DD') DATE_FORMAT(date, '%Y-%m-%d')
当前日期时间 SYSDATE GETDATE() SYSDATE NOW()
日期加减 date + INTERVAL '1' DAY DATEADD(DAY, 1, date) date + INTERVAL '1' DAY date + INTERVAL 1 DAY

Oracle:

XML 复制代码
BETWEEN TO_DATE(#{start}, 'YYYY-MM-DD') AND TO_DATE(#{end}, 'YYYY-MM-DD')

TO_DATE(#{begDate}, 'YYYY-MM-DD')

TO_DATE(#{endDate}, 'YYYY-MM-DD')

TO_CHAR(DateColumn, 'YYYY-MM-DD') AS FormattedDate

Sql server:

XML 复制代码
CONVERT(VARCHAR(10), DateColumn, 23) AS FormattedDate

  CYRQ >= #{paramMap.begdate}
        AND CYRQ &lt; #{paramMap.plusDays}

达梦:

3:模糊查询

sqlserver:

XML 复制代码
<if test="dto.keyword != null and dto.keyword != ''">
                AND (SRM1 LIKE #{dto.keyword} + '%'
                OR MDMM LIKE '%' + #{dto.keyword} + '%'
                OR MBZM10 LIKE #{dto.keyword} + '%')
            </if>

oracle:

XML 复制代码
<if test="dto.keyword != null and dto.keyword != ''">
                AND (SRM1 LIKE #{dto.keyword} || '%'
                OR MDMM LIKE '%' || #{dto.keyword} || '%'
                OR MBZM10 LIKE #{dto.keyword} || '%')
            </if>

3:函数和语法差异

功能 Oracle SQL Server 达梦 MySQL
空值处理 NVL(col, default) ISNULL(col, default) NVL(col, default) IFNULL(col, default)
条件表达式 DECODE(col, val1, res1, res2) CASE WHEN col=val1 THEN res1... DECODE() 或 CASE CASE WHEN...
自增主键 SEQUENCE + TRIGGER IDENTITY(1,1) IDENTITY 或 SEQUENCE AUTO_INCREMENT
注释 -- 单行 / /* 多行 */ 同上 同上 同上
相关推荐
数据库小组2 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
cnskylee3 小时前
【MySQL】麒麟V10 SP3系统安装MySQL-Commercial-8.0.46
数据库·mysql·adb
梦幻通灵3 小时前
修改MySQL数据库递增序列【持续更新】
数据库·mysql
大侠归来4 小时前
常用 MySQL 分库分表方案详解
数据库·mysql
悟道书生7 小时前
(一)Navicate为什么转存结构和数据只转存表而不包含建库?
数据库·oracle
`Levie8 小时前
MySQL-数据库服务日志管理与数据闪回
数据库·mysql
香蕉大香蕉(06敬畏市场)8 小时前
MySQL 单点详解(01)
java·数据库·mysql·面试·博客·实习
吹什么轩9 小时前
MySQL 事务管理:从 ACID 到 MVCC,一篇讲透
数据库·mysql
时间售卖铺10 小时前
Oracle DQL精髓:从基础到高级实战
运维·数据库·云原生·oracle
paopaokaka_luck10 小时前
基于springboot+vue的益暖微光公益服务平台(DeepSeek公益助手、善款信息追溯、志愿服务积分闭环、ECharts运营分析、活动状态自动流转)
java·前端·javascript·spring boot·mysql·架构·echarts