Druid解析SQL语句,遇到横线用反引号转义,规则不统一。请问如何识别

简介:

示例脚本:

sql1:select decode(b.ind_value,null,0.0,(t.bdhhs/t.khs) - b.ind_value) as ind_hb  from test1 b, test2 t;

sql2:select cust_cls01 AS 你好-测试 from test3;


druid版本:1.2.16

操作步骤及现象:对sql1和sql2分别调用工具类:List<SQLStatement> toStatementList(String sql, DbType dbType),数据库类型是odps, 其中sql1正常解析,sql2报错:com.alibaba.druid.sql.parser.ParserException: not supported.pos 25, line 2, column 25, token -


对sql2做如下处理,用反引号转义,拆分两个:

sql3:select cust_cls01 AS `你好-测试` from test4;

sql4:select cust_cls01 AS 你好`-`测试 from test5;

操作步骤及现象:对sql3和sql4分别调用工具类:List<SQLStatement> toStatementList(String sql, DbType dbType),数据库类型是odps, 其中sql3正常解析,sql4报错:com.alibaba.druid.sql.parser.ParserException: not supported.pos 27, line 2, column 25, token IDENTIFIER `-`


总结:

(1)横线-, druid解析时需要用反引号转义,而且还要把整个token值包起来才有效, 如果只包`-`没效果(2)需要区分横线-出现的位置。如果是作为字段别名,是有影响的,需要转义。如果是在函数里面作为减号,则解析不影响。


问题:

请问一下,对于特殊符号横线,druid解析规则不统一,有的要转义,有的不要转义,在sql解析时,如何区分呢?怎么区分在函数里面,还是函数外面(sql脚本不可编辑,以上sql仅为示例)

一般对于特殊字符,要么都转义,要么都不转义





相关文章
|
SQL 存储 JSON
SQL,解析 json
SQL,解析 json
218 8
|
SQL 数据库
SQL解析相关报错
SQL解析相关报错
168 5
|
SQL 关系型数据库 MySQL
数据库导入SQL文件:全面解析与操作指南
在数据库管理中,将SQL文件导入数据库是一个常见且重要的操作。无论是迁移数据、恢复备份,还是测试和开发环境搭建,掌握如何正确导入SQL文件都至关重要。本文将详细介绍数据库导入SQL文件的全过程,包括准备工作、操作步骤以及常见问题解决方案,旨在为数据库管理员和开发者提供全面的操作指南。一、准备工作在导
1722 0
|
10月前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
3237 11
|
12月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
SQL IDE 数据库连接
IntelliJ IDEA处理大文件SQL:性能优势解析
在数据库开发和管理工作中,执行大型SQL文件是一个常见的任务。传统的数据库管理工具如Navicat在处理大型SQL文件时可能会遇到性能瓶颈。而IntelliJ IDEA,作为一个强大的集成开发环境,提供了一些高级功能,使其在执行大文件SQL时表现出色。本文将探讨IntelliJ IDEA在处理大文件SQL时的性能优势,并与Navicat进行比较。
229 4
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
SQL 存储 数据库
SQL语句是否都需要解析及其相关技巧与方法
在数据库管理系统中,SQL(Structured Query Language)语句作为与数据库交互的桥梁,其执行过程往往涉及到一个或多个解析阶段
|
SQL Oracle 关系型数据库
SQL整库导出语录:全面解析与高效执行策略
在数据库管理和维护过程中,整库导出是一项常见的需求,无论是为了备份、迁移还是数据分析,掌握如何高效、准确地导出整个数据库至关重要
|
SQL 安全 Windows
SQL安装程序规则错误解析与解决方案
在安装SQL Server时,用户可能会遇到安装程序规则错误的问题,这些错误通常与系统配置、权限设置、依赖项缺失或版本不兼容等因素有关

推荐镜像

更多
  • DNS