my $data_types = $sth->{TYPE};
1
2
3
4
5
6
if ( $is_numeric_data_type{$col} ) {
return $value;
}
else {
return $dbh->quote( $value );
}
1
2
3
4
5
6
if ( looks_like_number $value ) {
return $value;
}
else {
return $dbh->quote( $value );
}
1
2
3
4
5
6
7
8
9
10
11
12
id | vorname | nachname
---|---------|-----------
1 | Max | Mustermann
2 | Lena | Müller
3 | Jonas | Schmidt
4 | Lisa | Schneider
5 | Tim | Fischer
6 | Max | Mustermann
7 | Lena | Müller
8 | Paul | Meier
9 | Anna | Huber
10 | Julia | Wagner
1
2
3
SELECT *
FROM (SELECT "id", "vorname", "nachname", ROW_NUMBER() OVER (PARTITION BY "vorname","nachname" ORDER BY "id" ASC) AS "rn" FROM "namen") "t1"
WHERE "rn" > '1'
1
2
3
SELECT *
FROM (SELECT "id", "vorname", "nachname", ROW_NUMBER() OVER (PARTITION BY "vorname","nachname" ORDER BY "id" ASC) AS "rn" FROM "namen") "t1"
WHERE "rn" > 1
1
2
3
4
id | vorname | nachname | rn
---|---------|------------|---
7 | Lena | Müller | 2
6 | Max | Mustermann | 2
2025-09-26T09:17:49 KuerbisUrsprünglich hatte ich Platzhalter verwendet. Mit der Einführung von rekursivem Code bzw. verschachteltem SQL hatte ich diese wieder entfernt, weil ich die Beibehaltung der richtigen Reihenfolge der Argumente für die Platzhalter für zu aufwändig hielt. Mal probieren ob ich das trotzdem hinbekomme.
$dbh->quote; $dbh->quote_identifier;
1
2
3
4
5
6
7
8
9
10
11
12
13
my $stmt = qq[SELECT * FROM (SELECT "id", "vorname", "nachname", ROW_NUMBER() OVER (PARTITION BY "vorname","nachname" ORDER BY "id" ASC) AS "rn" FROM "namen") "t1" WHERE "rn" > ?];
my $nr = 1;
my $sth = $dbh->prepare( $stmt );
$sth->execute( $nr );
say $sth->dump_results();
say "============";
$dbh->{sqlite_see_if_its_a_number} = 1;
$sth = $dbh->prepare( $stmt );
$sth->execute( $nr );
say $sth->dump_results();
1
2
3
4
5
6
if ( looks_like_number $value ) {
return $value;
}
else {
return $dbh->quote( $value );
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if ( $dbh->{sqlite_see_if_its_a_number} ) {
if ( looks_like_number $value ) {
return $value;
}
else {
return $dbh->quote( $value );
}
}
else {
if ( $is_numeric_data_type{$col} ) {
return $value;
}
else {
return $dbh->quote( $value );
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14
sub insert{ my $self = shift; my $dbh = ref $_[0] ? shift : $self->dbh('myweb'); my $tabn = shift; my %hunt = @_; my @fields = keys %hunt; $dbh->do(qq( INSERT INTO @{[$dbh->quote_identifier($tabn)]} (@{[join ',', map{$dbh->quote_identifier($_)}@fields]}) VALUES( @{[join ',', map{$dbh->quote($_)}@hunt{@fields}]} ) )); my @row = $dbh->selectrow_array("SELECT LAST_INSERT_ID()"); return $row[0]; }