gpt4 book ai didi

java - 设计问题 - 为业务计算生成 SQL 查询

转载 作者:行者123 更新时间:2023-11-30 09:52:01 24 4
gpt4 key购买 nike

我们有一个应用程序,允许用户输入表达式以对数据库表的字段执行计算。计算允许各种类型的函数(数学、逻辑、字符串、日期等)。例如 MAX(col1, col2, col3)。请注意,这些表达式可以通过嵌套函数变得复杂。例如IF(LENGTH(StringColumn)=0, MAX(col1, col2, 32), MIN(col1, col2, col3)) > LENGTH(col2)

我们实现它的一种方法是使用 java cc 解析器来解析用户输入的表达式,然后生成树型数据结构。然后在 java 中解析树,并为表达式中使用的每个函数生成 sql 查询。最后,在为每个用户输入的表达式生成查询后,java 使用简单的数据库调用执行此查询。

这个框架的一个主要问题是数据库问题要用java来处理。我所说的数据库问题是指某些数据库限制或任何性能优化。 Microsoft SQL Server 的一个数据库限制是只允许 10 个嵌套的 CASE WHEN 语句。这意味着在解析 java 代码时需要估计查询字符串在翻译之前有多少个 CASE WHEN。同样,如果有任何 sql 性能优化需要完成,在 java 中处理它们根本不符合逻辑。

有谁知道这个问题有更好的设计方法吗?

最佳答案

与其重新实现一种非常类似于 SQL 的语言并将其转换为 SQL,不如让您的用户使用 SQL 查询数据库。

关于java - 设计问题 - 为业务计算生成 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4407210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com