Aktualisierungsabfrage OO Base & MySQL

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Reginald
****
Beiträge: 114
Registriert: Fr, 23.07.2010 23:58

Aktualisierungsabfrage OO Base & MySQL

Beitrag von Reginald »

Wie kann ich mit einer SQL-Abfrage in einer auf Linux gehosteten mysql 5.1 Datenbank ein Feld vom Typ SmallInteger updaten: Es sind bisher entweder die Werte „1“ oder „2“ drin und ich habe rund 1000 leere Felder, die ich mit „1“ befüllen will.

Bei nem String-Feld geht das hier:

Code: Alles auswählen

UPDATE mitarbeiter SET bewertung = '1' WHERE bewertung = ''
Klappt aber nicht bei dem Small-Integer-Feld. Diese hier gehen auch nicht:

Code: Alles auswählen

UPDATE mitarbeiter SET bewertung = 1 WHERE bewertung = ''  
UPDATE mitarbeiter SET bewertung = 1 WHERE bewertung = NULL
UPDATE mitarbeiter SET bewertung = 1 WHERE bewertung = ""
UPDATE mitarbeiter SET bewertung = 1 WHERE bewertung = 0
Irgendwie scheint der das leere Feld noch anders zu behandeln.

Ideen??

Grüße
Reg
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Aktualisierungsabfrage OO Base & MySQL

Beitrag von komma4 »

ungetestet:

Code: Alles auswählen

UPDATE `mitarbeiter` SET `bewertung` = 1 WHERE `bewertung` NOT > 0


(Die MySQL-Dokumentation verwendet die backticks - Feldnamen sind case-sensitive!)

Hilft Dir das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Aktualisierungsabfrage OO Base & MySQL

Beitrag von DPunch »

Aloha

Code: Alles auswählen

UPDATE mitarbeiter SET bewertung = 1 WHERE bewertung = NULL
In SQL fragt man nicht auf "gleich Null" ab.
Null ist kein wirklicher Wert, sondern eher ein Zustand, daher können Spalten, die Null-"Werte" enthalten, auch nie mit logischen Operatoren wie "=",">","<" etc erfasst werden.

Die korrekte Syntax dafür ist

Code: Alles auswählen

UPDATE mitarbeiter SET bewertung = 1 WHERE bewertung IS NULL
Reginald hat geschrieben:Bei nem String-Feld geht das hier:

Code: Alles auswählen

UPDATE mitarbeiter SET bewertung = '1' WHERE bewertung = ''
Das wundert mich - wenn das String-Feld nie einen Inhalt hatte, kann eigentlich auch bei dieser Anweisung nichts passieren.
Antworten