IDEA XML文件里写SQL比较大小条件

背景

最近开发的时候,有一个需求的查询需要支持范围查询[a,b),并且查询的结果要求查询的范围含头端点不含尾端点。因为between...and...查询的范围是含头含尾的,因而不能使用。

因此打算直接使用>=和<来比较实现,使用>=的时候没有什么问题,结果在使用<的时候发现IDEA在报错。

查了一下发现是XML文件没法区分<是小于号还是一个标签的开始。

解决方案

以在用户表查询用户年龄范围为例子。

方案一

这种语法冲突的,一般情况下都可以利用转义字符来实现,这里也有类似的用法。

转移字符 实际含义
&lt; <
&gt; >

可以写作如下:

SELECT * FROM user WHEREage &gt;= a AND age &lt; b

方案二

当然还可以使用 <!CDATA\[ SQL语句 ]>语法来实现,在CDATA标签中间的SQL会被单纯当成SQL

例子:

<!CDATA\[ SELECT \* FROM user WHERE age \>= a AND age \< b ]>

方案三

可以继续使用between a and b,不过需要加多一个条件,xxx != b

例子:

SELECT * FROM user WHERE age BETWEEN a AND b AND age != b

方案四

可以把需要用到<的地方都转换成使用>

例子:

SELECT * FROM user WHERE age >= a AND b > age

相关推荐
AllData公司负责人9 分钟前
AI大模型数据开发底座系列说明书,AllData集成Chat2DB开源项目建设AI 数据库分析底座,涵盖AI 洞察/对话SQL/智能视图!
数据库·人工智能·sql·开源·ai 洞察·对话sql
Decay__5 小时前
SQLServer 索引与 SQL 优化 —— 聚集索引、非聚集索引、覆盖索引、碎片维护与执行计划
运维·数据库·sql·mysql·架构
星恒随风1 天前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
2603_969694851 天前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
数据技术说1 天前
在 KES AI 数据库上搭一条 NL2SQL 链路:语义、召回、权限各放哪
人工智能·sql·代码规范
codeejun2 天前
每日一Go·MySQL-14、慢 SQL 产生原因全解
sql·mysql·golang
新*2 天前
Elasticsearch 7.17 的 SQL 到底能查到什么?一次踩坑记录
后端·sql·elasticsearch·查询
这个DBA有点耶3 天前
库内计算推理:一条SQL背后的算子融合,和外挂方案差了几次网络往返
数据库·人工智能·sql
Decay__4 天前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构
科小怪4 天前
IntelliJ IDEA 下载安装:写 Java 和 Kotlin 主流的开发工具
intellij-idea·软件推荐·下载教程