0

SQL::Abstract を使用して、このクエリをどのように作成しますか。

SELECT * FROM mytable WHERE col1*col2 = 4;

私の人生では、操作の左側を単なる列ではなくカスタムにする方法の例を見つけることはできません。

私ができる最善のことは、SQL::Abstract を取得して col1*col2 を引用符で囲んで渡すことですが、それでは乗算が壊れます。

編集:最良の解決策は、乗算の例だけでなく、左側であらゆる種類の操作を行うものです。たとえば、もう少し複雑なことをしたい場合: (col1*col2)-col3.

4

2 に答える 2

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
于 2013-01-09T11:57:31.070 に答える
0

ドキュメントは、これがあなたのやり方だと思うように私に導きますが、私は試していません:

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

しかし、それを4と比較する方法がわかりません。

于 2013-01-09T00:01:27.070 に答える