App-DBBrowser

 view release on metacpan or  search on metacpan

lib/App/DBBrowser/Table/Extensions/ScalarFunctions/String.pm  view on Meta::CPAN

        $args_data = [
            { prompt => 'Where: ', unquote => 1, history => [ qw(BOTH LEADING TRAILING) ], history_only => 1, skip_ok => 1 },
            { prompt => 'What: ' }
        ];
    }
    my @args = $ga->get_arguments( $sql, $clause, $func, $args_data, $r_data );
    if ( $dbms eq 'SQLite' ) {
        my ( $what ) = @args;
        return "TRIM($col)"        if ! defined $what;
        return "TRIM($col,$what)";
    }
    else {
        my ( $where, $what ) = @args;
        my $tmp = join ' ', grep { length } $where, $what;
        return "TRIM($col)"            if ! length $tmp;
        return "TRIM($tmp FROM $col)";
    }
}


sub function_concat {
    my ( $sf, $sql, $clause, $func, $cols, $r_data ) = @_;
    my $dbms = $sf->{i}{dbms};
    my $ga = App::DBBrowser::Table::Extensions::ScalarFunctions::GetArguments->new( $sf->{i}, $sf->{o}, $sf->{d} );
    my $chosen_cols = $ga->choose_columns( $sql, $clause, $func, $cols, $r_data );
    if ( ! defined $chosen_cols ) {
        return;
    }
    if ( $dbms eq 'Pg' ) {
        for my $col ( @$chosen_cols ) {
            $col = $sf->__pg_col_to_text( $sql, $col );
        }
    }
    my $args_data = [
        { prompt => 'Separator: ', history => [ '-', ' ', '_', ',', '/', '=', '+', '|' ] },
    ];
    my ( $sep ) = $ga->get_arguments( $sql, $clause, $func, $args_data, $r_data );
    my $arg;
    if ( length $sep ) {
        for ( @$chosen_cols ) {
            push @$arg, $_, $sep;
        }
        pop @$arg;
    }
    else {
        $arg = $chosen_cols
    }
    return "CONCAT(" . join( ',', @$arg ) . ")"  if $dbms =~ /^(?:mysql|MariaDB|MSSQL)\z/;
    return join( " || ", @$arg );  # ansi 2003
}


sub __pg_col_to_text {
    my ( $sf, $sql, $col ) = @_;
    my $ax = App::DBBrowser::Auxil->new( $sf->{i}, $sf->{o}, $sf->{d} );
    return $ax->pg_column_to_text( $sql, $col );
}


# string units: $position, $instr, $locate, $left, $right, $length, $substring, $upper, $lower ##
# $round datetime: locale

1;



( run in 0.876 second using v1.01-cache-2.11-cpan-ceb78f64989 )