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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介:

示例脚本:

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仅为示例)

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





相关文章
|
2月前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
500 11
|
4月前
|
SQL IDE 数据库连接
IntelliJ IDEA处理大文件SQL:性能优势解析
在数据库开发和管理工作中,执行大型SQL文件是一个常见的任务。传统的数据库管理工具如Navicat在处理大型SQL文件时可能会遇到性能瓶颈。而IntelliJ IDEA,作为一个强大的集成开发环境,提供了一些高级功能,使其在执行大文件SQL时表现出色。本文将探讨IntelliJ IDEA在处理大文件SQL时的性能优势,并与Navicat进行比较。
76 4
|
4月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
5月前
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
4月前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
80 0
|
5月前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色
|
6月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
8月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
207 13
|
8月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
123 9
|
8月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
103 6

推荐镜像

更多