例子如下: (1).如果sql是
/test sql/select age from user where name = 'xx';
,需要获取到的值是/test sql/; (2).如果sql是
/test sql/0.6.6///select age from user where name = 'xx'; ```,需要获取到的值是/*test sql/0.6.6//*/
;
原提问者GitHub用户gogaobin2
MySQL中,头部注释是指在SQL语句的第一行使用/ /注释的内容。获取头部注释可以使用MySQL提供的SELECT语句和SUBSTRING_INDEX函数。
具体来说,可以使用以下SQL语句获取头部注释:
Copy
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(sql, '/', 1), '/', -1) AS comment
FROM information_schema.processlist
WHERE id = CONNECTION_ID();
在这个SQL语句中,使用SUBSTRING_INDEX函数从information_schema.processlist系统表中获取当前连接的SQL语句,并提取其中的头部注释。其中,SUBSTRING_INDEX(sql, '/', 1)表示提取SQL语句中第一个/之前的部分,即头部注释;而SUBSTRING_INDEX(..., '/', -1)则表示从头部注释中提取最后一个/之后的内容,即头部注释的具体内容。
现在就支持
String sql = "/test sql/select age from user where name = 'xx';"; Lexer lexer = new MySqlLexer(sql); lexer.setKeepComments(true); lexer.nextToken(); List comments = lexer.readAndResetComments(); System.out.println(comments);
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。