Sql server 在SQL server中创建公式
也许你们中的一些人可以帮助我用sql创建公式。我需要对所有给定公式的表达式结果进行计算。公式的符号很简单:P(X)表示表达式在括号中附加整数X。M(Y)表示表达式减去括号中的整数Y。“+”符号组合了公式的元素。 例子。给定公式:Sql server 在SQL server中创建公式,sql-server,tsql,Sql Server,Tsql,也许你们中的一些人可以帮助我用sql创建公式。我需要对所有给定公式的表达式结果进行计算。公式的符号很简单:P(X)表示表达式在括号中附加整数X。M(Y)表示表达式减去括号中的整数Y。“+”符号组合了公式的元素。 例子。给定公式:P(10)+M(5)+M(3)+P(1)。它转换为10-5-3+1=3 结果应该如下所示: 这些简单的公式可以在Microsoft SQL Server中完成 使用和+作为分隔符,将公式拆分为不同的部分 用于应用负数符号:P(X)-->X和M(X)-->-X 用于将字符串
P(10)+M(5)+M(3)+P(1)
。它转换为10-5-3+1=3
结果应该如下所示:
这些简单的公式可以在Microsoft SQL Server中完成
+
作为分隔符,将公式拆分为不同的部分P(X)-->X
和M(X)-->-X
group by
子句将所有内容相加create table input
(
formula nvarchar(50)
);
insert into input (formula) values
('P(10)+M(5)+M(3)+P(1)'),
('P(7)+M(3)+M(4)');
解决方案
select i.formula,
sum(convert(int, replace(replace(replace(s.value,'P(', ''),'M(','-'),')',''))) as rez
from input i
cross apply string_split(i.formula, '+') s
group by i.formula;
结果
formula rez
-------------------- ---
P(10)+M(5)+M(3)+P(1) 3
P(7)+M(3)+M(4) 0
通过中间步骤查看所有操作。不确定要实现什么您想要SQL中的公式解析器吗?可以解释文本值
'P(10)+M(5)+M(3)+P(1)
并产生数值结果3
,编写一个存储函数。它的外观取决于您的数据库您使用的是哪种DBMS产品?“SQL”只是所有关系数据库使用的查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加。因此,您创建了一个用于存储常量的过于复杂的语法。为什么?为什么不只存储一次计算结果,并且在需要该值时不必进行计算呢?旁白:虽然不能保证结果的顺序(“输出行可以是任意顺序。顺序不能保证与输入字符串中的子字符串的顺序匹配。”)这不会影响此解决方案,因为输入中唯一的运算符是加法(+
),并且使用了相应的聚合和
。