Feldinhalt in bigint Feld loeschen
Feldinhalt in bigint Feld loeschen
am 06.09.2006 12:30:09 von Peter Honka
Hallo,
musste in einer Tabelle "preistabelle" den Tatentyp
im Feld "preis" von vachar auf bigint ändern. Nun sind einige
Datensätze, die mal einen Preis enthielten aber
bei denen der Preis danach wieder gelöscht
wurde, auf "0" im Feld "preis" gesetzt worden.
Nun wollte ich bei allen Datensätze, deren Preis
0 lautet, den (falschen) Preis wieder löschen.
Leider funktioniert folgendes Statment nicht:
UPDATE preistabelle SET preis='' WHERE preis=0
Der where - Teil scheint ja richtig, aber wie
schreibe ich die Bedingung "lösche feldinhalt preis"
syntaktisch korrekt?
Myisam Tabelle, Feld Preis Datentyp jetzt bigint.
Danke und Gruss
Peter
Re: Feldinhalt in bigint Feld loeschen
am 06.09.2006 12:50:42 von Helmut Chang
Peter Honka schrieb:
> musste in einer Tabelle "preistabelle" den Tatentyp
> im Feld "preis" von vachar auf bigint ändern.
....
> Leider funktioniert folgendes Statment nicht:
>
> UPDATE preistabelle SET preis='' WHERE preis=0
>
> Der where - Teil scheint ja richtig, aber wie
> schreibe ich die Bedingung "lösche feldinhalt preis"
> syntaktisch korrekt?
Tjo. Einen Leerstring in ein BIGINT-Feld zu schreiben funktioniert
natürlich nicht. Und entspricht auch nicht dem gewünschten.
gruss, heli
Re: Feldinhalt in bigint Feld loeschen
am 06.09.2006 13:07:47 von Claus Reibenstein
Peter Honka schrieb:
> musste in einer Tabelle "preistabelle" den Tatentyp
> im Feld "preis" von vachar auf bigint ändern. Nun sind einige
> Datensätze, die mal einen Preis enthielten aber
> bei denen der Preis danach wieder gelöscht
> wurde, auf "0" im Feld "preis" gesetzt worden.
Dann wurde der Preis nicht wirklich gelöscht, also auf NULL gesetzt.
> Leider funktioniert folgendes Statment nicht:
>
> UPDATE preistabelle SET preis='' WHERE preis=0
Kann auch nicht funktionieren, weil Du einem BIGINT keinen String
zuweisen kannst.
Ist das der Weg, wie die Preise früher "gelöscht" wurden? Dann ist klar,
warum sie jetzt 0 sind.
> Der where - Teil scheint ja richtig, aber wie
> schreibe ich die Bedingung "lösche feldinhalt preis"
> syntaktisch korrekt?
Wie bei allen anderen Datentypen auch:
SET `preis` = NULL
Setzt aber voraus, dass `preis` auch NULL werden kann, also nicht auf
NOT NULL gesetzt ist.
BTW: Was stört Dich an dem Wert 0? Warum willst Du das von NULL
unterscheiden?
Gruß. Claus
Re: Feldinhalt in bigint Feld loeschen
am 06.09.2006 13:12:26 von Peter Honka
Helmut Chang schrieb:
> Tjo. Einen Leerstring in ein BIGINT-Feld zu schreiben funktioniert
> natürlich nicht. Und entspricht auch nicht dem gewünschten.
>
Dann also so: UPDATE idstatistik SET preis=NULL WHERE preis=0
Danke Helmut,
Gruss
Peter
Re: Feldinhalt in bigint Feld loeschen
am 06.09.2006 13:13:42 von Peter Honka
Claus Reibenstein schrieb:
>> UPDATE preistabelle SET preis='' WHERE preis=0
> Kann auch nicht funktionieren, weil Du einem BIGINT keinen String
> zuweisen kannst.
jau!
> SET `preis` = NULL
ok: UPDATE idstatistik SET preis=NULL WHERE preis=0
> Setzt aber voraus, dass `preis` auch NULL werden kann, also nicht auf
> NOT NULL gesetzt ist.
ja, geht
Danke und Gruss
Peter
Re: Feldinhalt in bigint Feld loeschen
am 06.09.2006 16:12:50 von Helmut Chang
Claus Reibenstein schrieb:
> BTW: Was stört Dich an dem Wert 0? Warum willst Du das von NULL
> unterscheiden?
Ohne jetzt genau zu wissen, was die Preistabelle des OPs enthält:
"Kost nix, is gratis!" ist ganz was anderes als "k. A., was das kostet"
bzw. "Preis auf Anfrage".
gruss, heli
Re: Feldinhalt in bigint Feld loeschen
am 06.09.2006 18:14:15 von Harald Fuchs
In article <4m7og2F4uegpU1@individual.net>,
Claus Reibenstein writes:
>> UPDATE preistabelle SET preis=3D'' WHERE preis=3D0
> Kann auch nicht funktionieren, weil Du einem BIGINT keinen String
> zuweisen kannst.
> Ist das der Weg, wie die Preise früher "gelöscht" wurden? Dann ist kl=
ar,
> warum sie jetzt 0 sind.
"Klar" ist das nur für jemanden, der MySQL ganz toll findet.
Ernstzunehmende Datenbanken bringen bei sowas eine Fehlermeldung.
Setz "sql_mode=3DTRADITIONAL" in Deine my.cnf, dann ist auch MySQL
einigermaßen ernstzunehmen.
Re: Feldinhalt in bigint Feld loeschen
am 06.09.2006 19:02:58 von Claus Reibenstein
Harald Fuchs schrieb:
> In article <4m7og2F4uegpU1@individual.net>,
> Claus Reibenstein writes:
Immer diese Einleitungsromane ...
>>> UPDATE preistabelle SET preis='' WHERE preis=0
>>
>> Ist das der Weg, wie die Preise früher "gelöscht" wurden? Dann ist klar,
>> warum sie jetzt 0 sind.
>
>
> "Klar" ist das nur für jemanden, der MySQL ganz toll findet.
> Ernstzunehmende Datenbanken bringen bei sowas eine Fehlermeldung.
>
Scheint hier nicht sehr beliebt zu sein, dieser Andreas.
> Setz "sql_mode=TRADITIONAL" in Deine my.cnf, dann ist auch MySQL
> einigermaßen ernstzunehmen.
Ich nehme MySQL auch ohne diese Option ernst. Ich habe mich auf seine
Eigenheiten eingestellt und kann damit sehr gut leben.
Gruß. Claus