PythonQ 240-8XX Bedienungsanleitung Seite 662

  • Herunterladen
  • Zu meinen Handbüchern hinzufügen
  • Drucken
  • Seite
    / 768
  • Inhaltsverzeichnis
  • LESEZEICHEN
  • Bewertet. / 5. Basierend auf Kundenbewertungen
Seitenansicht 661
Anhang A: Probleme und aufige Fehler 641
und in einer WHERE-Klausel, die ein Datum mit einer TIMESTAMP-, DATE- oder einer DATETIME-
Spalte vergleicht. (Entspannt heißt hierbei, dass jedes beliebige Satzzeichen als Trennze-
ichen zwischen Bestandteilen benutzt werden darf. Beispielsweise sind ’1998-08-15’ und
’1998#08#15’ ¨aquivalent.) MySQL kann auch eine Zeichenkette umwandeln, die keine
Trennzeichen enth¨alt (wie ’19980815’), vorausgesetzt, dass diese als Datum einen Sinn
ergibt.
Das spezielle Datum ’0000-00-00’ kann als ’0000-00-00’ gespeichert und a/jointfilesconvert/293675/bgerufen wer-
den. Wenn man ein ’0000-00-00’-Datum ¨uber MyODBC benutzt, wird es automatisch
in NULL umgewandelt (MyODBC-Version 2.50.12 und oher), weil ODBC diese Art von
Datum nicht handhaben kann.
Weil MySQL die oben genannten Umwandlungen durchf¨uhrt, funktionieren folgende State-
ments:
mysql> INSERT INTO tabelle (idate) VALUES (19970505);
mysql> INSERT INTO tabelle (idate) VALUES (’19970505’);
mysql> INSERT INTO tabelle (idate) VALUES (’97-05-05’);
mysql> INSERT INTO tabelle (idate) VALUES (’1997.05.05’);
mysql> INSERT INTO tabelle (idate) VALUES (’1997 05 05’);
mysql> INSERT INTO tabelle (idate) VALUES (’0000-00-00’);
mysql> SELECT idate FROM tabelle WHERE idate >= ’1997-05-05’;
mysql> SELECT idate FROM tabelle WHERE idate >= 19970505;
mysql> SELECT mod(idate,100) FROM tabelle WHERE idate >= 19970505;
mysql> SELECT idate FROM tabelle WHERE idate >= ’19970505’;
Folgendes jedoch funktioniert nicht:
mysql> SELECT idate FROM tabelle WHERE STRCMP(idate,’19970505’)=0;
STRCMP() ist eine Zeichenkettenfunktion, daher wird idate in eine Zeichenkette umgewan-
delt und ein Zeichenkettenvergleich durchgef¨uhrt. MySQL wandelt ’19970505’ nicht in ein
Datum um und f¨uhrt einen Datumsvergleich durch.
Beachten Sie, dass MySQL nicht pr¨uft, ob ein Datum korrekt ist oder nicht. Wenn Sie ein
falsches Datum wie ’1998-2-31’ speichern, wird das falsche Datum gespeichert. Wenn das
Datum in keinen vern¨unftigen Wert umgewandelt werden kann, wird 0 im DATE-Feld gespe-
ichert. Das ist haupts¨achlich eine Sache der Geschwindigkeit, und wir sind der Meinung,
dass es Sache der Applikation und nicht des Servers ist, Datumsangaben zu ¨uberpr¨ufen.
A.5.3 Probleme mit NULL-Werten
Das Konzept des NULL-Wert ist eine aufige Quelle der Verwirrung f¨ur SQL-Anf¨anger. Diese
denken aufig, NULL sei dasselbe wie eine leere Zeichenkette ’’. Das ist nicht der Fall! So
sind zum Beispiel folgende Statements grundverschieden:
mysql> INSERT INTO meine_tabelle (Telefon) VALUES (NULL);
mysql> INSERT INTO meine_tabelle (Telefon) VALUES ("");
Beide Statements ugen einen Wert in die Telefon-Spalte ein, aber das erste f¨ugt einen
NULL-Wert und das zweite eine leere Zeichenkette ein. Die Bedeutung des ersten ist etwa
“Telefonnummer unbekannt” und des zweiten “Keine Telefonnummer”.
Seitenansicht 661
1 2 ... 657 658 659 660 661 662 663 664 665 666 667 ... 767 768

Kommentare zu diesen Handbüchern

Keine Kommentare