Leser: 28
Use of uninitialized value $array[4] in string at script.pl line 2918.
no warnings 'uninitialized';
1 2 3 4 5 6 7 8
my $sql = "SELECT ID, Name, Vorname, GebDatum, Klasse FROM User WHERE Status != 'X' ORDER BY $order;"; my $sth = $dbh->prepare($sql); $sth->execute; my @daten = (); while ( my @row = $sth->fetchrow_array ) { push @daten, join( ";" , @row ); }
1
2
3
MySQL: SELECT NULLIF(spalte,'NULL-Alternative') FROM tabelle ;
PostgreSQL: SELECT COALESCE(spalte,'NULL-Alternative' FROM tabelle ;
Informix: SELECT NVL(spalte,'NULL-Alternative') FROM tabelle ;
1 2 3 4
my @daten = map { defined $_ ? $_ : 'NULL-Alternative' } $sth->fetchrow_array() ; # Ab perl 5.10 geht auch my @daten = map { $_ // 'Anstelle von ...' } $sth->fetchrow_array() ;
$hlist->itemCreate($zeile, $spalte, -text => $daten[4]?$daten[4]:"", -style => $style);
1 2 3 4 5
$hlist->itemCreate( $zeile, $spalte, -text => defined($daten[4]) ? $daten[4] : "", -style => $style );
2011-09-16T13:21:24 FIFODa musst Du aufpassen: Wenn die DB "0" (nicht NULL) zurückgibt, wird dies ebenfalls als "" in der HList angezeigt.
1
2
3
use Code::Prayer;
Code::Prayer::Abrakadabra->fixCode(__CODE__);
eval __CODE__ or die "Haha, no Code found!";
2013-08-22T12:11:54 KeanDas hört sich interessant an. Ich habe leider noch nichts objektorientiertes angewendet. Hast du da vielleicht ein Beispiel wie ich das machen kann?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
#!/usr/bin/perl package ValideHashValue; use Tie::Hash; use base 'Tie::StdHash'; use strict; use warnings; sub TIEHASH{ my $class = shift; my $href = shift; return bless $href, $class; } sub FETCH{ my $self = shift; my $key = shift; return defined $self->{$key} ? $self->{$key} : 'das war mal undef'; } package main; use strict; use warnings; my %hash = (); print $hash{foo}; # Use of uninitialized value in print ... # now, using tie: tie my %h, 'ValideHashValue', \%hash; print $h{foo}; # das war mal undef
QuoteWenn nun Datenfelder dabei sind welche NULL bzw. leer sind
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
mysql> select nr, if(email is NULL, 'nix drin', email) as email from mailbox;
+----+----------+
| nr | email |
+----+----------+
| 1 | nix drin |
| 2 | nix drin |
| 3 | nix drin |
| 4 | nix drin |
| 5 | nix drin |
| 6 | nix drin |
| 7 | nix drin |
| 8 | nix drin |
| 9 | nix drin |
| 10 | nix drin |
| 11 | nix drin |
| 12 | nix drin |
| 13 | nix drin |
| 14 | nix drin |
+----+----------+
14 rows in set (0.00 sec)
2013-08-23T07:29:28 MuffiMeine auch nicht, weil man wieder aufpassen muss was man als Füllsel nimmt. Nicht dass der String irgendwann einmal eine besondere Bedeutung hat bzw. ein erlaubter Wert für die Spalte istWär jetzt nicht meine favorisierte Lösung.
2013-08-23T07:29:28 MuffiDas versteh' ich jetzt nicht. Wieso sollte eine Datenbank keine NULL-Werte haben? Es gibt Tabellen, wo nicht jede Spalte gefüllt sein muss und trotzdem Sinn macht. Oder übersehe ich etwas?Zum aller größten Teil ist es einfach eine schlampige Datenbank, wenn NULL-Werte drin stehn.
Quote[EDIT] z.B. in rostis E-Mail-Beispiel seh ich spontan keinen Grund für eine E-Mail NULL-Werte zu erlauben.
1
2
3
4
5
6
7
mysql> alter table mailbox add column nachricht text default '';
ERROR 1101 (42000): BLOB/TEXT column 'nachricht' can't have a default value
mysql>
mysql>
mysql> alter table mailbox add column nachricht text;
Query OK, 14 rows affected (0.09 sec)
Records: 14 Duplicates: 0 Warnings: 0
2013-09-06T15:27:58 MuffiNimm halt varchar
1
2
3
4
5
Data storage model, Data abstraction
Hostname:Port.Databasename.Tablename.Entityname.HashOfHashes
^
Data Abstraction Layer | Application
1 2 3 4 5 6 7 8 9 10 11
tie my %bin, 'DBFreezer', ( base => 'myweb', entity => 'Gartenzwerg', tabn => 'newage', create => 0, ) or die $@; $bin{name} = undef; $bin{vname} = ''; untie %bin;
1
2
3
4
5
6
7
8
9
10
mysql> select * from newage;
+-------------+----+-----+-------+
| entity | id | idx | val |
+-------------+----+-----+-------+
| Gartenzwerg | 1 | 0 | name |
| Gartenzwerg | 1 | 1 | NULL |
| Gartenzwerg | 2 | 0 | vname |
| Gartenzwerg | 2 | 1 | |
+-------------+----+-----+-------+
4 rows in set (0.00 sec)