开发者社区> 问答> 正文

sql parser 对mysql字符串支持不够

/com/alibaba/druid/sql/parser/Lexer.java的 1、scanString2_d()方法 1251行判断字符串结束好像有问题,感觉应该用双引号才对? 2、scanString 方法对 mysql的支持不全,mysql里面 \ 也是可以转义的。

原提问者GitHub用户fastdev163

展开
收起
山海行 2023-07-05 19:59:29 80 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    您提到的问题涉及到Druid SQL解析器中的两个方法,以下是我的回答:

    scanString2_d()方法中字符串结束判断问题:
    在Druid SQL解析器的scanString2_d()方法中,该方法用于解析单引号字符串,其中包含一些特殊字符,例如单引号、反斜线等。在这个方法中,字符串结束的判断是使用单引号来判断的,而不是双引号。这是因为在SQL语法中,字符串通常使用单引号来表示,而不是双引号。

    如果您在使用Druid SQL解析器时遇到了字符串结束判断问题,可能是由于您的SQL语句中存在非法的字符串格式。您可以检查SQL语句中的字符串格式,确保它们符合SQL语法规则。

    scanString()方法中MySQL转义支持问题:
    在Druid SQL解析器的scanString()方法中,该方法用于解析单引号字符串,其中包含一些特殊字符,例如单引号、反斜线等。在MySQL中,反斜线可以用作转义字符,用于转义特殊字符。例如,\n表示换行符,\t表示制表符等。

    如果您在使用Druid SQL解析器时遇到了MySQL转义支持问题,可能是由于该方法没有完全支持MySQL的转义字符。您可以检查您的SQL语句中是否存在MySQL的转义字符,并考虑使用其他方法或工具来解析SQL语句。

    2023-07-30 14:36:33
    赞同 展开评论 打赏
  • 关于 scanString2_d() 方法中的判断字符串结束的问题,可能是由于该方法中使用的是单引号(')作为字符串的结束符号,而在实际使用中,可能会出现需要使用双引号(")作为字符串结束符号的情况。因此,建议在该方法中添加对双引号的支持,以满足更多的使用场景。
    scanString 方法对 mysql 的支持不全的问题,可能是由于该方法中没有考虑到 mysql 中的特殊字符 \,在实际使用中,\ 也是可以转义的。因此,建议在该方法中添加对 \ 的支持,以满足更多的使用场景。
    
    2023-07-11 10:02:29
    赞同 展开评论 打赏
  • 问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14

    原回答者GitHub用户wenshao

    2023-07-06 11:16:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载

相关镜像