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 )