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) IDENTITYSEQUENCE AUTO_INCREMENT
注释 -- 单行 / /* 多行 */ 同上 同上 同上
相关推荐
白鹭3 小时前
MySQL(多表查询练习)
数据库·mysql
AI 嗯啦7 小时前
SQL详细语法教程(三)mysql的函数知识
android·开发语言·数据库·python·sql·mysql
好记忆不如烂笔头abc8 小时前
另类pdb恢复方式-2
oracle
杰克尼9 小时前
mysql-条件查询案例
数据库·mysql
你那是什么调调11 小时前
`SHOW PROCESSLIST;` 返回列详解(含义 + 单位)
mysql
云心雨禅12 小时前
网站突然崩了,此站点遇到了致命错误!
服务器·mysql
Menior_15 小时前
【补充】数据库中有关系统编码和校验规则的简述
数据库·mysql·oracle
Kay_Liang16 小时前
从聚合到透视:SQL 窗口函数的系统解读
大数据·数据库·sql·mysql·数据分析·窗口函数
H21220216516 小时前
SQLite3库链接与加载问题解决方案
数据库·oracle·sqlite
诺亚凹凸曼18 小时前
MySQLinnodb引擎普通索引和唯一索引的区别
数据库·mysql