如何使用SQL :: Abstract生成SQL查询?

pla*_*etp 3 mysql perl sql-generation

如何WHERE使用SQL :: Abstract为此查询生成子句:

SELECT COUNT(*)FROM表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')什么?

dra*_*tun 6

请参见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,
);
Run Code Online (Sandbox Code Playgroud)

这是$query看起来如何:

SELECT count(*) FROM table WHERE ( ( (NOT FIND_IN_SET(type, '1,2,3,4')) 
AND id = ? AND status = ? ) )
Run Code Online (Sandbox Code Playgroud)