Sql 我有一个包含字母和数字的代数公式,我想计算并返回结果

Sql 我有一个包含字母和数字的代数公式,我想计算并返回结果,sql,Sql,有人知道在SQL Server中解决代数方程的能力吗 一个表格包含问题和答案 问题答案 宽度700 长度200 另一个表包含公式 (宽度+100)/长度 我要查找的返回值是4 问题是一个动态列表,因此每次运行时,问题都会略有不同,加上列表会增长,因此我必须能够独立添加到列表中,而不会影响sql语句。sql完全能够进行简单的数学运算。下面是一个例子: SELECT (WIDTH + 100) / LENGTH FROM DIMENSIONS 因此,如果您有一个包含数学表达式作为字符串的表,那么您

有人知道在SQL Server中解决代数方程的能力吗

一个表格包含问题和答案

问题答案 宽度700 长度200

另一个表包含公式 (宽度+100)/长度

我要查找的返回值是4


问题是一个动态列表,因此每次运行时,问题都会略有不同,加上列表会增长,因此我必须能够独立添加到列表中,而不会影响sql语句。

sql完全能够进行简单的数学运算。下面是一个例子:

SELECT (WIDTH + 100) / LENGTH
FROM DIMENSIONS
因此,如果您有一个包含数学表达式作为字符串的表,那么您可以查询该字符串,将其组合到新的SQL查询中,然后执行新的查询。例如:

SELECT 'SELECT ' || Expression || ' FROM DIMENSIONS'
FROM Expressions
如果
Expressions
是一个表,其列
Expression
的值
(宽度+100)/LENGTH
,则结果将是第一个示例中的SQL查询。然后简单地执行返回的SQL


注意:如果表达式来自不受信任的来源(例如,Internet上的用户),直接执行他们的输入是不安全的。

我认为您必须建立一个字符串,然后执行它。e、 g.在puedosql中,类似于

    declare SQLSTR varchar2(2000)

    set SQLSTR = select 'select '''+REPLACE(
                                      REPLACE(<column name holding formal>), 'WIDTH', <column holding width>), 
                                                                             'LENGTH', <column name holding length>) '''
    + ' from <table holding width and length columns> '
    + ' where <predicate>'
from <table holding formula.
where <predicate>

    exec (SQLSTR)
声明SQLSTR varchar2(2000)
set SQLSTR=选择“选择”+替换(
替换(),'WIDTH',),
'长度',)''
+“来自”
+“哪里”

从中,您必须只使用SQL吗?如果您不以某种方式告诉SQL应该是什么
WIDTH
LENGTH
,它将如何知道要使用什么值?您的问题令人困惑…您使用的是什么SQL?PostgreSQL有
EXECUTE
语句。可能的重复:您是否真的要求SQL将表中的字符串作为表达式进行求值,因此数据库中有一列包含字符串
(宽度+100)/LENGTH
,另外有一列(宽度)包含700,另一列包含200,表达式应计算
基于字符串表达式的(700+100)/200
。但是如果表中包含字符串表达式的下一行
(长度*宽度)/100
,你希望那一行的答案是1400,依此类推?@Johnathan Leffler。是的,这就是我想要的。问题和公式都会改变。我正在阅读Gabe的答案,但没有遵循他对维度的操作。在这种情况下,维度是一个有两列的表,问题和答案是长度,200I think这与问题所问的非常不同。数据库中有一列包含字符串
(宽度+100)/LENGTH
,另外还有一列(宽度)包含700,长度包含200,表达式应计算
(700+100)/200
基于字符串表达式。@JonathanLeffler:是的,我明白你的意思。我相应地更新了我的答案。@Gabe维度在我的情况下是一个包含两列问题和答案的表。因此行是“长度”、“200”和“宽度”、“700”。这可以让它工作,但它不是SQL设计的目的。(也就是说,考虑到前面提到的问题,使用动态SQL或类似的方法可能是必要的解决方案-应该重新说明问题,并在客户端对表达式进行求值。)我不同意。这是wokrs与SQL很好的结合。没有理由使用RDBMS,通过网络移动数据,使用客户端进行一些处理,通过网络获取更多数据,完成处理。只需最大限度地使用精细、强大、可能昂贵的RDBMS。