当前位置: 首页 > java >正文

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

1:分页查询

Sql Server:

<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查询:

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

Oracle:

<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>) innWHERE ROWNUM &lt;= #{endRow})
WHERE rn &gt;= #{startRow}

分页Count查询:

SELECT COUNT(*) AS total_count
FROM ( ) subquery

达梦:

<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查询:

SELECT COUNT(*) AS total_count
FROM ( ) subquery

mysql:

SELECT * FROM table<br>ORDER BY col<br>LIMIT 10 OFFSET 10;

2:时间处理

功能OracleSQL Server达梦MySQL
日期格式化TO_CHAR(date, 'YYYY-MM-DD')CONVERT(VARCHAR, date, 23)TO_CHAR(date, 'YYYY-MM-DD')DATE_FORMAT(date, '%Y-%m-%d')
当前日期时间SYSDATEGETDATE()SYSDATENOW()
日期加减date + INTERVAL '1' DAYDATEADD(DAY, 1, date)date + INTERVAL '1' DAYdate + INTERVAL 1 DAY

Oracle:

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:

CONVERT(VARCHAR(10), DateColumn, 23) AS FormattedDateCYRQ >= #{paramMap.begdate}AND CYRQ &lt; #{paramMap.plusDays}

达梦:

3:模糊查询

sqlserver:

<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:

<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:函数和语法差异

功能OracleSQL 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() 或 CASECASE WHEN...
自增主键SEQUENCE + TRIGGERIDENTITY(1,1)IDENTITY 或 SEQUENCEAUTO_INCREMENT
注释-- 单行 / /* 多行 */同上同上同上
http://www.xdnf.cn/news/6635.html

相关文章:

  • 弦理论的额外维度指的是什么,宇宙中有何依据
  • 成功案例丨从草图到鞍座:用先进的发泡成型仿真技术变革鞍座制造
  • 【Python+flask+mysql】网易云数据可视化分析(全网首发)
  • yocto5.2开发任务手册-7 升级配方
  • 【编译原理】递归下降分析程序的构造
  • 排序算法之高效排序:快速排序,归并排序,堆排序详解
  • 实例分割AI数据标注 ISAT自动标注工具使用方法
  • 如何在win11上 运行arm虚拟机
  • labelimg安装及使用指南(yolo)
  • VR场景制作如何完成?
  • 图像处理:预览并绘制图像细节
  • 汽车二自由度系统模型以及电动助力转向系统模型
  • LearnOpenGL --- 你好三角形
  • Android native崩溃问题分析
  • Python基础:集合(Set)
  • Python字符串常用方法详解
  • Flink运维要点
  • C++(17):引用传参
  • 从关键字执行机制入手理解 Robot Framework 源码
  • 【Opencv】canny边缘检测提取中心坐标
  • 2025第三届盘古初赛(计算机部分)
  • 中天智能装备有限公司在柔性立库设备方面有哪些产品?
  • vue复杂数据类型多层嵌套的监听
  • Python之三大基本库——Matplotlib
  • 基于 React Hook 封装 Store 的三种方案
  • 嵌入式故障码管理系统设计实现
  • 问题 | 国内外软件定义卫星最新进展研究
  • MySQL 高可用
  • DevExpressWinForms-RichEditControl-基础应用
  • 若依框架SpringBoot从Mysql替换集成人大金仓(KingBase)数据库