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

时间:2013-04-21 06:21:07

标签: sql

是否有人知道在SQL Server中解决代数方程的任何能力

一个表包含问题和答案

问题解答 宽度700 长度200

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

我正在寻找的返回值是4

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

2 个答案:

答案 0 :(得分:1)

SQL非常适合简单的数学运算。这是一个例子:

SELECT (WIDTH + 100) / LENGTH
FROM DIMENSIONS

因此,如果您将包含数学表达式的表作为字符串,则可以查询字符串,将其组合为新的SQL查询,然后执行新查询。例如:

SELECT 'SELECT ' || Expression || ' FROM DIMENSIONS'
FROM Expressions

如果Expressions是列Expression的值为(WIDTH + 100) / LENGTH的表,则结果将是我的第一个示例中的SQL查询。然后只需执行返回的SQL。

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

答案 1 :(得分:1)

我认为你必须建立一个字符串然后执行它。例如在puedo SQL中,类似于;

    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)