有人知道在 SQL Server 中求解代数方程的能力吗
一张表包含问题和答案
问题 答案 宽度 700 长度 200
另一个表包含公式 (WIDTH + 100) / LENGTH
我正在寻找的返回值是 4
这些问题是一个动态列表,因此每次运行时问题都会略有不同,而且列表会增长,因此我必须能够独立添加到列表中而不会影响 sql 语句。
有人知道在 SQL Server 中求解代数方程的能力吗
一张表包含问题和答案
问题 答案 宽度 700 长度 200
另一个表包含公式 (WIDTH + 100) / LENGTH
我正在寻找的返回值是 4
这些问题是一个动态列表,因此每次运行时问题都会略有不同,而且列表会增长,因此我必须能够独立添加到列表中而不会影响 sql 语句。
SQL 完全能够进行简单的数学运算。这是一个例子:
SELECT (WIDTH + 100) / LENGTH
FROM DIMENSIONS
因此,如果您有一个包含作为字符串的数学表达式的表,您可以查询该字符串,将其组合成一个新的 SQL 查询,然后执行新的查询。例如:
SELECT 'SELECT ' || Expression || ' FROM DIMENSIONS'
FROM Expressions
如果Expressions
是一个表,其列Expression
具有 value (WIDTH + 100) / LENGTH
,则结果将是我的第一个示例中的 SQL 查询。然后只需执行返回的 SQL。
注意:如果表达式来自不受信任的来源(例如 Internet 上的用户),则直接执行他们的输入是不安全的。
我认为你必须建立一个字符串然后执行它。例如在 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)