SQL :: Abstract - 匹配列操作的值

时间:2013-01-08 23:50:19

标签: sql perl

使用SQL :: Abstract,我将如何构建此查询:

SELECT * FROM mytable WHERE col1*col2 = 4;

在我的生活中找不到任何关于如何使操作的左侧为自定义而不仅仅是列的示例。

我能做的最好就是让SQL :: Abstract传递col1 * col2并在其周围加上引号,但这会打破乘法。

编辑:最好的解决方案是在左侧采用任何类型的操作,而不仅仅是乘法示例。例如,如果我想做一些稍微复杂的事情:(col1 * col2)-col3。

2 个答案:

答案 0 :(得分:2)

这可以满足您的需求吗?

use v5.16;
use warnings;

use SQL::Abstract;

my $sqlab = SQL::Abstract->new;

my ($stmt, @bind) = $sqlab->select('mytable', '*', { '(col1*col2)-col3' => 4 });

use Data::Dump;
dd $stmt;
dd @bind;

<强>输出

"SELECT * FROM mytable WHERE ( (col1*col2)-col3 = ? )"
4

答案 1 :(得分:0)

该文件让我认为你是这样做的,但我没有尝试过:

'col1' => { '*' => { -ident => 'col2' } }

但我不确定你将它与4进行比较。