Veröffentlicht 9. Mai 200718 j Hallo, habe in einer Oracle Tabelle eine Spalte namens "Text", in der sich SQL-Befehle befinden. Wie kann ich nun per SQL diese Abfragen in der Spalte abändern? Bsp.(Abfrage momentan): WHERE (modell like 'Modell1' or modell like 'Modell2') und ich will da noch ein "or modell like 'Modell3' anhängen. Wie mach ich das? Mit UPDATE bekomm ichs nicht hin Hoffe ich habs einigermaßen verständlich erklärt.
10. Mai 200718 j hi, etwa so: update [tabelle] set text=text || '[weiterere sql-befehle]' where text=[bedingung]; mit dem verkettungsoperator || bleibt der ursprüngliche wert in dem feld erhalten und der rest wird angefügt. grüße von ipu
10. Mai 200718 j Danke! das ist das was ich suche. Jetzt gibt es noch ein Problem. Der Text ist nach dem oben von mir angegebenen Auszug noch nicht am Ende. Also ich kann den neuen Text nicht einfach hinten anhängen sondern muss ihn dazwischen einfügen. Kann ich mit der SET Text Sache auch an eine bestimmte Stelle angeben wo es hin soll?
10. Mai 200718 j Also die Struktur der Abfrage im Feld "Text" ist: SELECT.....FROM....WHERE (modell like 'Modell1' or modell like 'Modell2') AND Status = .....AND.... und ich will eben noch ein "or modell like 'Modell3'" anhängen.
10. Mai 200718 j du musst in dem fall mit stringfunktionen (z.b. CONCAT, SUBSTR, INSTR) arbeiten. Oracle String Functions s'Amstel
10. Mai 200718 j ja danke. habs im Moment so gelöst: SET TEXT = SUBSTR(TEXT, 1, 263) || "or modell like 'Modell3')" Doch da krieg ich komischerweise nen Fehler "Ungültiger Spaltenname" mit Hinweis auf das "or". Anscheinend erkennt der den String als SQL-Syntax und meckert deshalb rum. Oder hab ich sonst noch nen Syntaxfehler drin?
10. Mai 200718 j update tabellexyz set spaltea = concat(SUBSTR(spaltea, 1, 10) , ' und noch m''e''hr' ) where ... das geht auf jeden fall !! ich habe es getestet auf einer mysql-DB
10. Mai 200718 j habs hinbekommen, musste den String noch weiter zerlegen und da in dem Text Zeichen wie ' vorkommen muss man da bissel aufpassen...
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.