SQL 中大于小于号的表示方法总结

在编写 SQL 语句时,尤其是在动态 SQL 或 MyBatis 等 XML 配置的 SQL 中,我们经常需要处理特殊符号(如 ><>=<=)的转义问题。这是因为这些符号在 XML 中具有特殊含义,直接使用可能导致解析错误。以下是两种常见的解决方法:


方法一:使用转义符号

在 XML 中,我们可以使用转义字符来替代特殊符号,避免解析冲突。常用转义符如下:

  • 小于号 < :用 &lt; 表示

  • 小于等于 <= :用 &lt;= 表示

  • 大于号 > :用 &gt; 表示

  • 大于等于 >= :用 &gt;= 表示

示例 SQL(MyBatis 中):

sql 复制代码
SELECT * FROM orders
WHERE create_at &gt;= #{startTime} AND create_at &lt;= #{endTime}

方法二:使用 <![CDATA[ ]]> 包裹

通过 <![CDATA[ ]]> 包裹 SQL 片段,可以告诉 XML 解析器忽略其中的特殊符号,直接作为纯文本处理。这种方式更直观,无需记忆转义符。

示例 SQL:

sql 复制代码
SELECT * FROM orders
WHERE create_at <![CDATA[ >= ]]> #{startTime} 
  AND create_at <![CDATA[ <= ]]> #{endTime}

对比总结

方法 优点 缺点
转义符号 简洁,适合短语句 需记忆转义符,可读性稍差
<![CDATA[]]> 无需转义,直观易读 代码略显冗长

使用建议

  • 简单条件推荐使用转义符号 (如 &gt;=)。

  • 复杂 SQL 或包含多个特殊符号时,推荐用 <![CDATA[ ]]> 提升可读性。

  • 注意在 MyBatis 中动态 SQL 标签(如 <if><where>)内混合使用时的格式规范。