-1

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

一张表包含问题和答案

问题 答案 宽度 700 长度 200

另一个表包含公式 (WIDTH + 100) / LENGTH

我正在寻找的返回值是 4

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

4

2 回答 2

1

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

SELECT (WIDTH + 100) / LENGTH
FROM DIMENSIONS

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

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

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

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

于 2013-04-21T06:26:16.150 回答
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)
于 2013-04-21T06:44:18.677 回答