3

SQL::AbstractWHEREを使用してこのクエリの句を生成するにはどうすればよいですか:

SELECT COUNT(*) FROM table WHERE id = 111 AND NOT FIND_IN_SET(type, '1,2,3,4') AND status = 'pending';

のような条件を含める適切な方法は何WHERE FIND_IN_SET(type, '1,2,3,4')ですか?

4

4 に答える 4

5

not_bool単項演算子オプションを参照してください。

use SQL::Abstract;

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

my $where = {
    id => 111,
    status => 'pending',
    -not_bool => "FIND_IN_SET(type, '1,2,3,4')",
};

my ($query, @bind) = $sql->select( 
    'table',
    'count(*)',
    $where,
);

これはどのよう$queryに見えるかです:

SELECT count(*) FROM table WHERE ( ( (NOT FIND_IN_SET(type, '1,2,3,4')) 
AND id = ? AND status = ? ) )
于 2010-10-12T11:05:47.413 に答える
3

このコードは次のWHERE句を生成します。

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

my %where = (
    id => 111,
    -nest => \"NOT FIND_IN_SET(type, '1,2,3,4')",
    status => 'pending',
);

my ($stmt, @bind) = $sql->where(\%where, \@order);
于 2010-10-12T10:54:41.143 に答える
0

FIND_IN_SET は標準 SQL ではないため、SQL::Abstract はそれをサポートしていません。ただし、リテラル SQLを SQL::Abstract クエリに入れることはできます。あなたの解決策はそのルートにあると思います。

于 2010-10-12T10:45:26.297 に答える
-3

見てください:DALMP

PHPを使用したMySQLのデータベース抽象化レイヤー

脂肪0%で非常に使いやすいです。必要な場合にのみデータベースに接続します。

http://code.google.com/p/dalmp/

于 2010-10-30T11:10:28.700 に答える