Thread DBD::SQLite - Datentypen (9 answers)
Opened by Kuerbis at 2025-09-25 07:36

Kuerbis
 2025-09-27 17:25
#197280 #197280
User since
2011-03-20
961 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
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();


Code: (dl )
1
2
3
4
5
6
7
0 rows
0
============
7, 'Lena', 'Müller', 2
6, 'Max', 'Mustermann', 2
2 rows
2


Wenn ich das richtig sehe, wird nach dem Aktivieren von sqlite_see_if_its_a_number das gemacht, was auch
Code: (dl )
1
2
3
4
5
6
if ( looks_like_number $value ) {
return $value;
}
else {
return $dbh->quote( $value );
}

machen würde.

Darum neige ich jetzt dazu, es so zu machen:

Code: (dl )
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 );
}
}

View full thread DBD::SQLite - Datentypen