sql
文章平均质量分 84
10km
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
jsqlparser(四):实现MySQL 函数DATE_FORMAT到Phoenix函数TO_CHAR的替换
上一篇博客《jsqlparser:基于语法分析实现SQL中的CAST函数替换》中我用jsqlparser这个神器实现了 替换。现在又遇到新问题了,MySQL中日期格式化函数为DATE_FORMAT,对应Phoenix中的函数为TO_CHAR,如果应用层使用函数,也要替换为才能在HBase数据库中正常执行。有了上次经验,这次就简单多了,不同的是的日期格式定义与Phoenix不同,所以的参数也需要自动替换,但是只能不完全替换。以下为实现代码完整的代码参见码云仓库:https://gitee.com/l0原创 2022-12-03 14:53:56 · 908 阅读 · 0 评论 -
jsqlparser(三):基于语法分析实现SQL中的CAST函数替换
最近遇到一个问题,应用层提供的SQL语句中有这样的语句,在MySQL中执行肯定是没问题的,但是后台数据库切换到了HBase,使用apache phoenix 提供的JDBC驱动访问时却报错了,按照phoenix官方的文档,CAST函数是支持,但现实就是报错过不了,应该是我使用的phoenix版本问题,应该是个BUG,暂时无法通过升级版本解决。解决方案也不复杂就是用phoenix的Native函数函数来代替,将替换为。那么问题来了,如果让应用层来替换这事很方便,但是我们希望数据存储对应用层是透明的,应用层不需原创 2022-12-03 13:33:19 · 1429 阅读 · 0 评论 -
jsqlparser(六):TablesNamesFinder 深度解析与 SQL 格式化实现
本文探讨了JSQLParser中TablesNamesFinder类的核心原理与应用。作为SQL解析的关键工具,TablesNamesFinder通过访问者模式遍历AST,收集SQL语句中的表名信息。文章分析了其继承关系(实现多个访问者接口)、核心功能(表名收集、可配置性)及与CCJSqlParserVisitor的关系。典型应用场景包括表依赖分析、SQL安全检查、格式化等。最后通过CanonicalColumnVisitor示例展示了如何扩展该类实现列名规范化(添加表前缀/别名),为SQL处理提供灵活解决原创 2025-08-30 12:30:40 · 996 阅读 · 3 评论 -
jsqlparser(五):修改语法定义(JSqlParserCC.jjt)实现UPSERT支持Phoenix语法ON DUPLICATE KEY IGNORE
最近在用4.5解析SQL时遇到了一个问题,如下是的语句即为当主键重复时忽略,这与MySQL的IGNOREjsqlparser目前的最新版本支持UPSERT语法,也支持,但不支持。所以jsqlparser解析SQL遇到语法时解析器会报错。原创 2022-12-10 17:54:37 · 1336 阅读 · 1 评论 -
jsqlparser(四):解析SQL语句部件
对每个SQL部件,CCJSqlParser都有一个对应的无参解析方法,一般情况下,这个方法名是解析对象的类名。这个用于定义排序的ORDER BY语句解析为。原创 2023-03-24 14:37:19 · 1098 阅读 · 0 评论 -
jsqlparser(二):实现基于SQL语法分析的SQL注入攻击检查
当前时通过正则表达式来检查SQL语句中是否有危险关键字和常量表达式实现SQL语句的注入攻击检查。坦率的说,这个办法是有漏洞的,误判,漏判的概率很大,基于当前我的知识能力,也只能做到这样。最近学习了,我知道我找到了更好的办法来解决SQL注入攻击检查问题。介绍了如何通过jsqlparser来遍历SQL语句中所有的字段和表名引用。原创 2022-11-09 12:53:53 · 3073 阅读 · 2 评论 -
jsqlparser(一):基于抽象语法树(AST)遍历SQL语句的语法元素
是一个java的SQL语句解析器,基于它可以实现很多之前无法完成的工作。原创 2022-10-31 13:03:49 · 4607 阅读 · 5 评论
分享