/com/alibaba/druid/sql/parser/Lexer.java的 1、scanString2_d()方法 1251行判断字符串结束好像有问题,感觉应该用双引号才对? 2、scanString 方法对 mysql的支持不全,mysql里面 \ 也是可以转义的。
原提问者GitHub用户fastdev163
您提到的问题涉及到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语句。
关于 scanString2_d() 方法中的判断字符串结束的问题,可能是由于该方法中使用的是单引号(')作为字符串的结束符号,而在实际使用中,可能会出现需要使用双引号(")作为字符串结束符号的情况。因此,建议在该方法中添加对双引号的支持,以满足更多的使用场景。
scanString 方法对 mysql 的支持不全的问题,可能是由于该方法中没有考虑到 mysql 中的特殊字符 \,在实际使用中,\ 也是可以转义的。因此,建议在该方法中添加对 \ 的支持,以满足更多的使用场景。
问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。