Quiq::Sql::Composer - Klasse zum Erzeugen von SQL-Code
Quiq::Dbms
Instantiierung:
$s = Quiq::Sql::Composer->new($dbms); # Name eines DBMS (siehe Basisklasse) $s = Quiq::Sql::Composer->new($db); # Instanz einer Datenbankverbindung
Alias:
$sql = $s->alias($expr,$alias);
CASE:
$sql = $s->case($expr,@pairs,@opt); $sql = $s->case($expr,@pairs,$else,@opt);
Ausdruck, wie er in einer Select-Liste auftreten kann (expr).
Alias für den Ausdruck.
Ausdruck mit Alias (String)
Ergänze den Ausdruck $expr um den Alias $alias und liefere das Resultat zurück.
$sql = $s->alias('LOWER(name)','name'); ==> "LOWER(name) AS name"
CASE-Ausdruck (expr)
Liste von WHEN/THEN-Paaren (valExpr)
ELSE-Wert (valExpr)
Erzeuge einen mehrzeiligen (m=multiline) oder einen einzeiligen (i=inline) Ausdruck.
CASE-Ausdruck (String)
Erzeuge einen CASE-Ausdruck und liefere diesen zurück.
Übersetze Wochentagsnummer in Wochentagskürzel (SQLite)
$sql = $s->case("strftime('%w', datum)",0=>'So',1=>'Mo',2=>'Di', 3=>'Mi',4=>'Do',5=>'Fr',6=>'Sa'); ==> "CASE strftime('%w', datum) WHEN '0' THEN 'So' WHEN '1' THEN 'Mo' WHEN '2' THEN 'Di' WHEN '3' THEN 'Mi' WHEN '4' THEN 'Do' WHEN '5' THEN 'Fr' WHEN '6' THEN 'Sa' END"
Übersetze 1, 0 in 'Ja', 'Nein', einzeiliger Ausdruck
$sql = $s->case('bearbeitet',1=>'Ja','Nein',-fmt=>'i'); ==> "CASE bearbeitet WHEN '1' THEN 'Ja' ELSE 'Nein' END"
Ausdruck statt Sting-Literal (NULL)
$sql = $s->case('bearbeitet',1=>'Ja',0=>'Nein',\'NULL',-fmt=>'i'); ==> "CASE bearbeitet WHEN '1' THEN 'Ja' WHEN '0' THEN 'Nein' ELSE NULL END"
$sql = $s->expr($expr); $sql = $s->expr(\$val);
Ausdruck, der unverändert geliefert wird.
Wert, der in ein SQL String-Literals gewandelt wird (siehe Methode $s->stringLiteral()).
Ausdruck oder String-Literal (String)
Liefere den Ausdruck $expr oder den in den in ein Stringliteral gewandelten Wert $val zurück.
$sql = $s->valExpr($val); $sql = $s->valExpr(\$expr);
Stringliteral oder Ausdruck (String)
Liefere den in den in ein Stringliteral gewandelten Wert $val oder den Ausdruck $expr zurück.
$sql = $s->stringLiteral($val); $sql = $s->stringLiteral($val,$default);
Wert, der in ein SQL String-Literals gewandelt wird.
Defaultwert, der in ein SQL String-Literals gewandelt wird. Als Defaultwert kann auch ein Ausdruck angegeben werden, der nicht in ein Stringliteral gewandelt wird, wenn diesem ein Backslash (\) vorangestellt wird.
Wandele den Wert $val in ein SQL-Stringliteral und liefere dieses zurück. Hierbei werden alle in $str enthaltenen einfachen Anführungsstriche verdoppelt und der gesamte String in einfache Anführungsstriche eingefasst. Ist der String leer ('' oder undef) liefere einen Leerstring (kein leeres String-Literal!). Ist $default angegeben, liefere diesen Wert als Stringliteral.
Anmerkung: PostgreSQL erlaubt aktuell Escape-Sequenzen in String-Literalen. Wir behandeln diese nicht. Escape-Sequenzen sollten in postgresql.conf abgeschaltet werden mit der Setzung:
standard_conforming_strings = on
Eingebettete Anführungsstriche
$s->stringLiteral("Sie hat's"); ==> "'Sie hat''s'"
Leerstring, wenn kein Wert
$s->stringLiteral(''); ==> ""
Defaultwert, wenn kein Wert
$s->stringLiteral('','schwarz'); ==> "'schwarz'"
Ausdruck als Defaultwert, wenn kein Wert
$s->stringLiteral('',\'NULL'); ==> "NULL"
1.196
Frank Seitz, http://fseitz.de/
Copyright (C) 2021 Frank Seitz
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Quiq, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Quiq
CPAN shell
perl -MCPAN -e shell install Quiq
For more information on module installation, please visit the detailed CPAN module installation guide.