检查包含数学运算的字符串是否有效?

问题描述 投票:0回答:2

我有一个公式等级表,用户可以在其中使用我在应用程序 UI 上提供的运算符、列、段号创建自己的公式

配方 小费 公式 等级猫
1 运营商 (
1 专栏 考绩制度 5
1 运营商 +
1 专栏 PTS 4
1 运营商 )
1 运营商 /
1 数字 2

数学字符串来自公式列,列类型是另一个等级类型的另一个值

( PAS + PTS ) / 2

最后一个过程将变成字符串

( Number + Number ) / 2

注意: 此公式只是示例,公式可以是任何形式,对于其他示例

( 5+1+2+3) / 4
,或
1 + 1
,它不固定为这种形式
( Number + Number ) / 2
,用户可以创建具有上述给定功能的任何公式,运算符、数字和列。

是否可以在 mysql 中评估此字符串以确定是否有效的数学运算?

mysql sql math expression
2个回答
0
投票

您通过正则表达式 [mysql] 使用此代码

SELECT '(5+9)/2' REGEXP '\\(([0-9]+)\\+([0-9]+)\\)\\/2';

可以将'(5+9)/2'变为输入值

运营商 正则代码
+
\\+
*
\\/
/
\\*
-
\\-
(
\\(
)
\\)
整数
([0-9]+)
浮点数
([0-9]+|[.|][0-9]+)

太难了)


0
投票

最后我根据@Serg 的建议创建了这个 SP 我尝试创建下面的 SP 来处理错误

CREATE PROCEDURE SP_TEST()
BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN 
SHOW ERRORS; 
END;      
SET @sql = 'SELECT ( 100 + 100  / 2';
PREPARE stmt FROM @sql;
EXECUTE stmt;
END;
CALL SP_TEST();

如果有任何错误的数学运算,它会显示错误

谢谢大家

© www.soinside.com 2019 - 2024. All rights reserved.