开发者社区> 问答> 正文

SQLUtils.formatSQLServer格式化“ALTER TABLE”结果错误

原始SQL: ALTER TABLE kpiTarget ADD deleted tinyint DEFAULT 0 预期格式化后:ALTER TABLE kpiTarget\n\tADD deleted tinyint DEFAULT 0 用druid格式化:ALTER TABLE kpiTarget ADD (deleted tinyint DEFAULT 0) 已经明显改变了语义。 druid版本:1.1.6 (2018.1.30更新最新版也是一样)

原提问者GitHub用户renxiaoyao

展开
收起
山海行 2023-07-05 22:12:40 110 0
5 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    SQLUtils.formatSQLServer 是一个用于格式化 SQL 语句的工具类,通常用于将 SQL 语句转换为更易读的格式。然而,如果您在使用该方法格式化 "ALTER TABLE" 语句时遇到错误,可能是由于以下原因:

    1. 输入的 SQL 语句不符合 "ALTER TABLE" 的语法结构。请确保您的 SQL 语句包含 "ALTER TABLE" 关键字,并且其语法结构正确。
    2. 您可能没有正确导入 SQLUtils 类。请确保在您的代码中导入了该类,以便正确使用其方法。
    3. 兼容性问题。SQLUtils.formatSQLServer 方法可能不兼容某些特定的数据库或 SQL 版本。请确保您的数据库和 SQL 版本与该方法兼容。
    2023-07-29 22:52:07
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    这个问题可能是由于SQLUtils.formatSQLServer不够智能而导致的,它可能对特定的ALTER TABLE语句格式化出现了错误。

    您可以尝试使用其他SQL格式化工具来解决这个问题。以下是一些值得尝试的SQL格式化工具:

    SQL Formatter:这是一个在线工具,可以对多种不同的SQL语法进行格式化。您可以在网上找到这个工具并尝试使用它。

    SQL Pretty Printer:这个工具可以格式化多种不同的SQL语法,包括ALTER TABLE语句。

    PoorSQL:这是一个开源的SQL美化工具,可以帮助您格式化SQL语句并提高可读性。

    您还可以尝试在编码中手动格式化SQL语句,以确保语义和可读性。例如,您可以使用字符串拼接和缩进来格式化您的SQL语句,以使其更易于阅读。

    希望这些建议对您有所帮助,并能解决您遇到的问题。如果您还有其他问题,请随时向我提问。

    2023-07-07 12:04:16
    赞同 展开评论 打赏
  • 感谢你的反馈。对于SQL格式化工具,不同的工具或版本可能会有不同的规则和行为。在你提供的示例中,使用了Druid进行格式化后,SQL语句的结构和语义发生了变化。

    这种差异可能是由于Druid版本或配置中的特定规则造成的。Druid是一个开源的SQL解析器和格式化工具,由阿里巴巴公司开发和维护。虽然Druid旨在提供一致且合理的SQL格式化结果,但在某些情况下,输出结果可能与预期的不完全一致。

    如果你需要确保SQL语句的格式化符合特定的需求和预期,可以尝试其他SQL格式化工具,并根据实际情况选择最适合的工具。另外,也建议检查Druid的相关文档和配置选项,以了解是否有可调整的参数来满足你的期望。

    2023-07-06 17:36:41
    赞同 展开评论 打赏
  • 问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14

    原回答者GitHub用户wenshao

    2023-07-06 12:45:08
    赞同 展开评论 打赏
  • 预期的格式化后的SQL语句是与原始的SQL语句相同的,只是将换行符和缩进添加进去以提高可读性。而使用Druid格式化后的SQL语句则有所变化,它将括号添加到了ADD关键字后面,这可能会改变语句的语义。请注意,在不同的SQL格式化工具中,可能会有不同的格式化规则和结果。

    2023-07-06 08:25:22
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载