在MySQL中使用PreparedStatement
背景
有个只会SQL的校友在群里问了一个MySQL表达式求值有关的问题,大意是数据库里存储的是表达式,但需要计算表达式的结果进行查询。刚开始我以为MySQL里有类似eval 的函数,后来看了一下并没有,与之类似的是PreparedStatement ,然后结合存储过程,实现了在MySQL中进行表达式求值。这里,我将问题简化下,然后以此为例,介绍MySQL中的PreparedStatement。
问题
建表语句:
create table expression_test
(
id bigint auto_increment primary key,
expression varchar(255) default '' not null comment '表达式',
result varchar(64) default '' not null comment '结果'
);
在这个表里,expression 列是一些表达式(算术运算),result 列是计算结果。初始状态下,表里expression 列有一些表达式,result 列为空,现需要计算表达式的值,并将结果填到result 列里。
如果不限制只能使用SQL,那这个问题并不算很困难,可以将表达式查出来,然后计算并写入结果即可,不过其实也可以用PreparedStatement。但如果限制只能使用SQL就有一定难度了,毕竟很少有这样的使用场景。