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

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

示例脚本:

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

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





相关文章
|
8天前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
20 0
|
30天前
|
SQL 监控 数据库
SQL语句是否都需要解析及其相关技巧和方法
在数据库管理中,SQL(结构化查询语言)语句的使用无处不在,它们负责数据的查询、插入、更新和删除等操作
|
30天前
|
SQL 数据可视化 BI
SQL语句及查询结果解析:技巧与方法
在数据库管理和数据分析中,SQL语句扮演着至关重要的角色
|
1月前
|
SQL 监控 关系型数据库
SQL错误代码1303解析与处理方法
在SQL编程和数据库管理中,遇到错误代码是常有的事,其中错误代码1303在不同数据库系统中可能代表不同的含义
|
1月前
|
SQL 存储 关系型数据库
SQL默认索引是什么:深入解析与技巧
在SQL数据库中,索引是一种用于提高查询性能的重要数据结构
|
1月前
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:实现过程与关键细节解析an3.021-6232.com
随着互联网技术的快速发展,ASP.NET作为一种广泛使用的服务器端开发技术,其与数据库的交互操作成为了应用开发中的重要环节。本文将详细介绍在ASP.NET中如何连接SQL数据库,包括连接的基本概念、实现步骤、关键代码示例以及常见问题的解决方案。由于篇幅限制,本文不能保证达到完整的2000字,但会确保
|
2月前
|
关系型数据库 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)")
|
4月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
111 13
|
4月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
4月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
60 6

推荐镜像

更多