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

zysjyyx4  于 2022-12-13  发布在  Perl
关注(0)|答案(4)|浏览(324)

如何使用SQL::Abstract为该查询生成WHERE子句:
SELECT COUNT(*)FROM数据表WHERE识别码= 111 AND NOT FIND_IN_SET(类型为'1,2,3,4')AND状态= '搁置中';
包含WHERE FIND_IN_SET(type, '1,2,3,4')等条件的正确方法是什么?

68bkxrlz

68bkxrlz1#

请参阅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 = ? ) )
oxf4rvwz

oxf4rvwz2#

此代码生成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);
btxsgosb

btxsgosb3#

FIND_IN_SET不是标准的SQL,所以SQL::Abstract不支持它。但是,您可以将任何文本SQL放入SQL::Abstract查询中。我希望您的解决方案是沿着这条路线。

3b6akqbq

3b6akqbq4#

看一看:下降
使用PHP的MySQL数据库抽象层
0%脂肪和非常容易使用。只连接到数据库时需要。
http://code.google.com/p/dalmp/

相关问题