The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SQL::OOP::Where - WHERE factory class

SYNOPSIS

    use SQL::OOP::Where;
    
    my $where = SQL::OOP::Where->new();
    my $cond1 = $where->cmp($operator, $field, $value);
    my $cond2 = $where->is_null('some_field');
    my $cond3 = $where->is_not_null('some_field');
    my $cond4 = $where->between('some_field', 1, 2);
    my $cond5 = $where->in('some_field', [1, 2, 3]);
    
    my $sql  = $cond1->to_string;
    my @bind = $cond1->bind;
    
    # combine conditions
    my $cond7 = $where->or($cond1, $cond2);
    $cond7->append($cond3);
    my $cond8 = $where->and($cond7, $where->and($cond4, $cond5));
    
    my $sql  = $cond8->to_string;
    my @bind = $cond8->bind;
    
    # SQL::Abstract style
    my $seed = [a => 'b', c => 'd'];
    my $cond10 = $where->and_abstract($seed); # default operator is '='
    my $cond11 = $where->and_abstract($seed, "LIKE");
    my $cond12 = $where->or_abstract($seed); # default operator is '='
    my $cond13 = $where->or_abstract($seed, "LIKE");
    
    my $sql  = $cond13->to_string;
    my @bind = $cond13->bind;

DESCRIPTION

SQL::OOP::Where is a Factory Class for WHERE clause elements. All methods of this returns SQL::OOP::Base or SQL::OOP::Array.

METHODS

SQL::OOP::Where->new

Returns SQL::OOP::Where instance. This class instance is just for convenience. All methods in this class also can be called as Class method.

    my $util = SQL::OOP::Where->new;

$instance->cmp($operator, $fieldname, $value)

Generates 1 operator expression.

    my $where = SQL::OOP::Where->new;
    $where->cmp('=', 'col1', 'value') # "col1" = ?
    $where->cmp('=', ['table', 'col1'], 'value') # "table"."col1" = ?
    $where->cmp('=', $subquery, $subquery)

$instance->cmp_nested($fieldname, $object) [DEPRECATED]

Generates 1 operator expression with sub query in value.

$instance->in($fieldname, $array_ref)

Generates IN clause

    my $where = SQL::OOP::Where->new;
    $where->in('col1', ['candidate1', 'candidate2']) # "col1" IN (?, ?)
    $where->in(['table', 'col1'], ['c1', 'c2']) # "table"."col1" IN (?, ?)

$instance->not_in($fieldname, $array_ref)

Generates NOT IN clause

    my $where = SQL::OOP::Where->new;
    $where->not_in('col1', ['val1', 'val2']) # "col1" NOT IN (?, ?)
    $where->not_in(['tbl', 'col1'], ['v1', 'v2']) # "tbl"."col1" NOT IN (?, ?)

$instance->between($fieldname, $upper, $lower)

Generates BETWEEN clause

    my $where = SQL::OOP::Where->new;
    $where->between('col1', 5, 10]) # "col1" BETWEEN ? AND ?
    $where->between(['table', 'col1'], 5, 10) # "table"."col1" BETWEEN ? AND ?

$instance->is_not_null($fieldname)

Generates IS NOT NULL clause

    my $where = SQL::OOP::Where->new;
    $where->is_not_null('col1') # "col1" IS NOT NULL
    $where->is_not_null(['table', 'col1']) # "table"."col1" IS NOT NULL

$instance->is_null($fieldname)

Generates IS NULL clause

    my $where = SQL::OOP::Where->new;
    $where->is_null('col1') # "col1" IS NULL
    $where->is_null(['table', 'col1']) # "table"."col1" IS NULL

$instance->or(@array)

Generates OR expression in SQL::OOP::Array

$instance->or_hash(%hash_ref) DEPRECATED

Generates OR expression in SQL::OOP::Array by hash

$instance->or_abstract($array_ref)

Generates OR expression in SQL::OOP::Array by key-value array

$instance->and(@array)

Generates AND expression in SQL::OOP::Array

$instance->and_hash(%hash_ref) DEPRECATED

Generates AND expression in SQL::OOP::Array by hash

$instance->and_abstract($array_ref)

Generates AND expression in SQL::OOP::Array by key-value array

SEE ALSO