Frage

ein Datenbankfeld namens „widget_ids“ In Anbetracht, Daten wie mit „67/797/124 /“ oder „45 /“, wobei die Zahlen Schrägstrich getrennt widget_ids sind ... wie würden Sie eine Update-Anweisung mit SQL machen das würde sagen: „Wenn die widget_ids der Zeile mit der ID X enthält den Text‚somenumber /‘nichts tun, sonst anhängen‚somenumber /

‘, um es aktuelle Wert ist“

Kann man so etwas mit SQL tun, oder genauer gesagt, SQLite? Ist das etwas, das im Programm besser aus irgendeinem Grund durchgeführt wird, oder gibt es Unterstützung für „if-then“ wie Syntax in SQL?

War es hilfreich?

Lösung

Updates sind ein bisschen wie wenn-thens selbst, und es gibt auch if-then Unterstützung irgendwelcher Art in den meisten SQL-Implementierungen. Eine einfache Lösung könnte sein:

update <tablename>
  set widget_id = widget_id + "somenumber/"
  where row_id = X
    and widget_id not like "%/somenumber/%"
    and widget_id not like "somenumber/%";

Andere Tipps

Als erstes werde das Symbol getrennte Liste entfernen. Verwenden Sie eine andere Tabelle, mit einer Widget-ID pro Zeile.

CREATE TABLE ThingieWidgets (
  thingie_id INT REFERENCES Thingies,
  widget_id INT REFERENCES Widgets,
  PRIMARY KEY(thingie_id, widget_id)
);

Füllen Sie die Tabelle mit den Werten aus dem Schrägstrich getrennte Liste:

INSERT INTO ThingieWidgets (thingie_id, widget_id)
  VALUES (1234, 67), (1234, 797), (1234, 124);

Jetzt können Sie testen, ob Thingie 1234 Referenzen 45 widget:

SELECT * FROM ThingieWidgets
WHERE thingie_id = 1234 AND widget_id = 45;

Sie können versuchen, einzusetzen und zu erholen, wenn es einen doppelten Schlüssel Fehler ist:

INSERT INTO ThingieWidgets (thingie_id, widget_id)
  VALUES (1234, 45);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top