sql难点

一、

假设你有一个查询,需要根据 id 是否为 null 来动态生成 SQL 条件:

xml复制

<select id="getResources" resultType="Resource">SELECT * FROM resources<where><if test="id != null">and id <![CDATA[<>]]> #{id}</if></where>
</select>

生成的 SQL

假设 id 的值为 123,生成的 SQL 将是:

sql复制

SELECT * FROM resources
WHERE id <> 123

如果 idnull,则不会生成任何条件,生成的 SQL 将是:

sql复制

SELECT * FROM resources

从表 resources 中选择所有列(* 表示所有列),但只选择那些 id 字段不等于 123 的记录。

二、

查询解释

sql复制

SELECTIFNULL(MAX(IFNULL(ORDER_NO, 0)), 0)
FROMscm_web_classify_tab
WHEREDELETE_FLAG = 0AND TENANT_ID = #{tenantId}
  1. IFNULL(ORDER_NO, 0)

    • 这个函数确保 ORDER_NO 如果为 NULL,则用 0 替代。这样可以避免 MAX 函数在处理 NULL 值时的问题。

  2. MAX(...)

    • 这个函数用于获取 ORDER_NO 的最大值。如果所有 ORDER_NO 都是 NULLMAX 函数会返回 NULL

  3. IFNULL(..., 0)

    • 这个函数确保如果 MAX 函数的结果是 NULL,则用 0 替代。这样可以确保最终结果总是返回一个数字,而不是 NULL

三、

SQL 片段解释

sql复制

CASEWHEN r.REPORT_TYPE = 3 THEN CONCAT(cci.REPORT_CYCLE_YEAR, '年', r.REPORT_NAME)WHEN r.REPORT_TYPE = 2 THEN CONCAT(cci.REPORT_CYCLE_YEAR, '年',CASEWHEN cci.REPORT_CYCLE_QUARTER = 1 THEN '第一季度'WHEN cci.REPORT_CYCLE_QUARTER = 2 THEN '第二季度'WHEN cci.REPORT_CYCLE_QUARTER = 3 THEN '第三季度'WHEN cci.REPORT_CYCLE_QUARTER = 4 THEN '第四季度'END)-- 可以继续添加其他条件
END

详细解释

  1. CASE WHEN

    • CASE 语句用于根据条件选择不同的值。

    • WHEN r.REPORT_TYPE = 3:如果 r.REPORT_TYPE 的值为 3,则执行 THEN 后面的表达式。

    • THEN CONCAT(cci.REPORT_CYCLE_YEAR, '年', r.REPORT_NAME):将 cci.REPORT_CYCLE_YEARr.REPORT_NAME 拼接成一个字符串,中间用 连接。

  2. 嵌套 CASE WHEN

    • WHEN r.REPORT_TYPE = 2 的情况下,进一步使用嵌套的 CASE 语句来处理季度的情况。

    • WHEN cci.REPORT_CYCLE_QUARTER = 1 THEN '第一季度':如果 cci.REPORT_CYCLE_QUARTER 的值为 1,则返回字符串 第一季度

    • 同样地,处理其他季度的情况。

四、

示例代码

xml复制

<if test="tableName=='zb_logistics_enterprises_manage' or tableName=='zb_logistics_park_base_run_monitor' or tableName=='zb_report_cold_chain_logistics_enterprises_info'">${bColumnName},ec_lc.STATE lastCycleState,
</if>

详细解释

  1. bColumnName

    • bColumnName 是一个动态列名,它可能是通过某种逻辑动态生成的,或者从用户输入中获取的。

    • 使用 ${} 语法直接将 bColumnName 的值插入到 SQL 中。这允许你在运行时动态指定列名。

    • 例如,bColumnName 可能是 ec_lc.NAMEec_lc.ID 等,具体取决于业务需求。

table_a
Column NameData Type
idINT
nameVARCHAR
created_atDATETIME
 System.out.println("aColumnName: " + paramMap.get("aColumnName"));System.out.println("bColumnName: " + paramMap.get("bColumnName"));

假设 table_a 的列名是 id, name, created_at,则输出可能是:

aColumnName: a.id,a.name,a.created_at
bColumnName: b.id1,b.name1,b.created_at1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/16824.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)

青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;六级&#xff09; 一、单选题(共25题&#xff0c;共50分) 1.下面代码的输出结果正确的是?(B) import json json_str [ "Alice", "girl", 17,"New York"] data json.loa…

Qwen2.5-Max:国内新一代 MoE 大模型的崛起!

通义千问 DeepSeek 才火没多久&#xff0c;国内又出现了一款可以比肩 DeepSeek 的 MoE 大模型——Qwen2.5-Max。这款大模型使用了超过 20 万亿 token 的预训练数据及精心设计的后训练方案进行训练&#xff0c;无疑开启了 AI 的新时代。 Qwen2.5-Max Qwen2.5-Max Qwen&#xff0…

把 DeepSeek1.5b 部署在显卡小于4G的电脑上

这里写自定义目录标题 介绍准备安装 Ollama查看CUDA需要版本安装CudaToolkit检查Cuda是否装好二、设置Ollama环境变量三、验证是否跑在GPU上ollama如何导入本地下载的模型安装及配置docker安装open-webui启动open-webui开始对话介绍 Deepseek1.5b能够运行在只用cpu和gpu内存小…

FPGA 28 ,基于 Vivado Verilog 的呼吸灯效果设计与实现( 使用 Vivado Verilog 实现呼吸灯效果 )

目录 前言 一. 设计流程 1.1 需求分析 1.2 方案设计 1.3 PWM解析 二. 实现流程 2.1 确定时间单位和精度 2.2 定义参数和寄存器 2.3 实现计数器逻辑 2.4 控制 LED 状态 三. 整体流程 3.1 全部代码 3.2 代码逻辑 1. 参数定义 2. 分级计数 3. 状态切换 4. LED 输…

日常知识点之面试后反思裸写string类

1&#xff1a;实现一个字符串类。 简单汇总 最简单的方案&#xff0c;使用一个字符串指针&#xff0c;以及实际字符串长度即可。 参考stl的实现&#xff0c;为了提升string的性能&#xff0c;实际上单纯的字符串指针和实际长度是不够了&#xff0c;如上&#xff0c;有优化方案…

用AI绘制CAD气温曲线图

此文章视频讲解地址 https://www.bilibili.com/video/BV1JtKjenEhF 需求 根据气温的JSON数据&#xff0c;用AI自动生成CAD格式的气温曲线DWG图 数据准备 用deepseek获取了北京市最近一个月的气温json数据 AI对话 首先进入唯杰地图云端管理平台 选择与唯杰地图AI对话 需求描…

Web应用项目开发 ——Spring Boot邮件发送

一.邮件发送介绍 邮件发送是一个非常常见的功能&#xff0c;注册时的身份认证、重要通知发送等都会用到邮件发送。在现代的Web应用程序中&#xff0c;邮件发送功能是非常常见且重要的一部分&#xff0c;Spring Boot框架提供了简单且强大的方式来实现邮件发送功能。Spring中提供…

【STM32】通过L496的HAL库Flash建立FatFS文件系统(CubeMX自动配置R0.12C版本)

【STM32】通过L496的HAL库Flash建立FatFS文件系统&#xff08;CubeMX自动配置R0.12C版本&#xff09; 文章目录 FlashFlash地址写Flash地址读 FatFS文件系统配置FatFS移植驱动函数时间戳函数 文件操作函数工作区缓存文件挂载和格式化测试文件读写测试其他文件操作函数 测试附录…

机械臂运动学笔记(一):正向运动学

正向运动学指的是通过相邻关节间的转动和移动坐标&#xff0c;将末端的坐标计算出来。 反向运动学指的是已知机械臂末端的坐标&#xff0c;反算每个关节可能的转动和移动参数。 参考资料&#xff1a;4.机械臂几何法与DH表示法_哔哩哔哩_bilibili 一.任意连杆连接的变量定义&a…

Leetcode - 周赛435

目录 一、3442. 奇偶频次间的最大差值 I二、3443. K 次修改后的最大曼哈顿距离三、3444. 使数组包含目标值倍数的最少增量四、3445. 奇偶频次间的最大差值 II 一、3442. 奇偶频次间的最大差值 I 题目链接 本题使用数组统计字符串 s s s 中每个字符的出现次数&#xff0c;然后…

鸿蒙HarmonyOS NEXT开发:优化用户界面性能——组件复用(@Reusable装饰器)

文章目录 一、概述二、原理介绍三、使用规则四、复用类型详解1、标准型2、有限变化型2.1、类型1和类型2布局不同&#xff0c;业务逻辑不同2.2、类型1和类型2布局不同&#xff0c;但是很多业务逻辑公用 3、组合型4、全局型5、嵌套型 一、概述 组件复用是优化用户界面性能&#…

pyrender 渲染报错解决

pyrender渲染后&#xff0c;出来的图样子不对&#xff1a; 正确的图&#xff1a; 解决方法&#xff1a; pip install numpy1.26 下面的不是必须的&#xff1a; pip install pyrender0.1.45 os.environ["PYOPENGL_PLATFORM"] "egl" os.environ[EGL_DEVI…

CCFCSP第34次认证第一题——矩阵重塑(其一)

第34次认证第一题——矩阵重塑&#xff08;其一&#xff09; 官网链接 时间限制&#xff1a; 1.0 秒 空间限制&#xff1a; 512 MiB 相关文件&#xff1a; 题目目录&#xff08;样例文件&#xff09; 题目背景 矩阵&#xff08;二维&#xff09;的重塑&#xff08;reshap…

Neurlps2024论文解读|BERTs are Generative In-Context Learners-water-merged

论文标题 BERTs are Generative In-Context Learners BERTs 是生成式上下文学习器 论文链接 BERTs are Generative In-Context Learners论文下载 论文作者 David Samuel 内容简介 本文探讨了掩码语言模型&#xff08;如DeBERTa&#xff09;在上下文学习中的生成能力&…

深入理解Java对接DeepSeek

其实&#xff0c;整个对接过程很简单&#xff0c;就四步&#xff0c;获取key&#xff0c;找到接口文档&#xff0c;接口测试&#xff0c;代码对接。 1.获取 KEY https://platform.deepseek.com/transactions 直接付款就是了&#xff08;现在官网暂停充值2025年2月7日&#xf…

OSPF高级特性(3):安全特效

引言 OSPF的基础我们已经结束学习了&#xff0c;接下来我们继续学习OSPF的高级特性。为了方便大家阅读&#xff0c;我会将高级特性的几篇链接放在末尾&#xff0c;所有链接都是站内的&#xff0c;大家点击即可阅读&#xff1a; OSPF基础&#xff08;1&#xff09;&#xff1a;工…

HCIA项目实践--静态路由的总结和简单配置

七、静态路由 7.1 路由器获取未知网段的路由信息&#xff1a; &#xff08;1&#xff09;静态路由&#xff1a;网络管理员手工配置的路由条目&#xff0c;它不依赖网络拓扑的变化进行自动更新&#xff0c;而是根据管理员预先设定的路径来转发数据包。其优点是配置简单、占用系…

3dtiles——Cesium ion for Autodesk Revit Add-In插件

一、说明&#xff1a; Cesium已经支持3dtiles的模型格式转换&#xff1b; 可以从Cesium官方Aesset中上传gltf等格式文件转换为3dtiles&#xff1b; 也可以下载插件&#xff08;例如revit-cesium插件&#xff09;转换并自动上传到Cesium官方Aseet中。 Revit转3dtiles插件使用…

HCIA项目实践---网络层次常见的三种模型

2.2 网络的层次 2.2.1 常见的三种网络层次划分 应用层 &#xff08;1&#xff09;OSI 七层模型 物理层&#xff1a;处于最底层&#xff0c;主要负责处理物理介质上的信号传输&#xff0c;如电缆、光纤、无线等。其作用是定义物理设备的接口标准、信号的编码方式、传输速率等&…

【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案

建筑设计公司在项目执行过程中&#xff0c;会产生大量的设计图纸、效果图、实景照片等图片资料。这些资料按照项目名称、阶段、专业等维度存放在多个文件夹和子文件夹中。 操作需求&#xff1a;为了方便内部管理和向客户交付完整的设计方案&#xff0c;公司需要将每个项目文件…