Nach leerer Stelle suchen und Wert eintragen

andiel

Neuer Benutzer
Beiträge
2
Hallo, ich beschäftige mich noch nicht so lange mit Datenbanken.
Bislang habe ich alles im Netz gefunden um das hinzubekommen was ich benötige.
Aber nun stehe ich auf dem Schlauch.

Ich möchte in der Datenbank in einer Tablle nach einer leeren Stelle ( oder 0 ) in einer Spalte suchen.
Hier dürfen aber nur die ersten 45 Stellen durchsucht werden.
Wenn eine leere Stelle gefunden wird soll ein Wert eingetragen werden.

Würde mich über Hilfe freuen

Andi
 
Werbung:
Etwas mager Deine Angaben, welche 45 Stellen? In einer Zahl, einem Text?
Der Datentyp ist ein varchar oder ein char?

..where <meinFeld> is null
..where <meinFeld> = 0
..where <meinFeld> = ''
..where SUBSTRING ( <meinFeld> ,1 , 45 ) = ''

z.B.
update <meineTabelle> set <meinFeld> = 'irgendwas' where <meinFeld> is null
 
also, zur Frage:
* leer ist NULL und nicht 0, oder anders: leer ist nicht 0.
* suchen geht mit SELECT, hier verbunden mit einer WHERE-Condition nach entweder NULL oder 0
* mit erste 45 Stellen meist Du Rows?
* mit 'erste' ist dann impliziet eine Sortierung, also ein ORDER BY gemeint
* 'Wert eintragen' damit meinst Du sicherlich ein UPDATE

alles in allem: offenbar willst Du via SELECT mit einer passenden Where-Condition, einem ORDER BY und einem LIMIT einen passenden Datensatz finden, über dessen PRIMARY KEY Du dann ein UPDATE durchführen kannst. Dazu bieten sich CTE-Abgfragen an, aber nicht nur.

Soweit verstanden?
 
Hallo, vielen Dank für die Antworten.
Sorry .. ich kenne mich mit den Datenbankbegriffen nicht so aus.
Ich habe die Tabelle wie auf dem Bild zu sehen.

Ich möchte immer in die erste leere stelle der Spalte mit Update was schreiben.
Also im Beispiel wäre es in der Spalte "lager_eingang_nr" dann bei id 2.
Es darf aber nur so lange was geschrieben werden bis links daneben keine Zahl mehr steht.
Im Beispiel Bild bis id 45 .. dann soll eine Fehlermeldung kommen.
Danke für den Tipp mit Null und 0 ... das war mir bislang noch nicht bewust. Was ist denn besser .. wenn es NULL oder 0 ist.
Was ich jetzt von euch rausgehört habe wäre folgende Vorgehensweise

Ich Sortiere die Spalte lager_eingang_nr, dann stehen alle werte untereinander.
Aber wie kann ich dann in die erste Stelle mit NULL oder 0 ansprechen?
Und wie kann ich das auf eine Anzahl von Rows begrenzen?

Für einen weiteren Tipp wäre ich dankbar.

Liebe grüße

Andi
30-11-_2021_10-22-29.jpg
 
Werbung:
Code:
edb=*# select * from andi ;
 id | lager_eingang | lager_e_nr 
----+---------------+------------
  1 | b4            |    4102221
  2 | b5            |           
  3 | b6            |    4102212
  4 | b7            |           
(4 rows)
edb=*# with foo as (select * from andi where lager_e_nr is null order by id asc limit 1) update andi set lager_e_nr = 4711 where id = (select id from foo);
UPDATE 1
edb=*# select * from andi order by id;
 id | lager_eingang | lager_e_nr 
----+---------------+------------
  1 | b4            |    4102221
  2 | b5            |       4711
  3 | b6            |    4102212
  4 | b7            |           
(4 rows)
 
Zurück
Oben