Seite 1 von 1
Leerzeichen in Default-Value verursacht Fehler
Verfasst: Samstag 9. Februar 2013, 17:51
von atarax
Ich möchte einer Tabelle eine Spalte mit dem Standardwert
Hallo Welt (ohne Anführungszeichen) hinzufügen.
Code: Alles auswählen
ALTER TABLE 'mytable' ADD COLUMN 'newcolumn' TEXT DEFAULT Hallo
funktioniert, liefert aber nur
Hallo als Standardwert.
Code: Alles auswählen
ALTER TABLE 'mytable' ADD COLUMN 'newcolumn' TEXT DEFAULT Hallo Welt
verursacht einen Syntaxfehler aufgrund des Leerzeichens
Code: Alles auswählen
ALTER TABLE 'mytable' ADD COLUMN 'newcolumn' TEXT DEFAULT 'Hallo Welt'
funktioniert, liefert aber
'Hallo Welt' als Standardwert (einschließlich einfacher Anführungszeichen).
Habe leider bisher keine Möglichkeit gefunden, das Leerzeichen zu escapen. Weiß jemand Rat? Vielen Dank!
Re: Leerzeichen in Default-Value verursacht Fehler
Verfasst: Samstag 9. Februar 2013, 18:02
von BlackJack
@atarax: Zeichenketten werden in SQL üblicherweise in Anführungszeichen eingefasst. Und die sind nicht Bestandteil des Wertes. Das ist also die vorgesehene Art Leerzeichen zu „escapen”.
Tabellen und Spaltennamen werden dagegen normalerweise *nicht* in Anführungszeichen gesetzt. Ich denke das wird auch nicht jedes DBMS so schlucken.
Re: Leerzeichen in Default-Value verursacht Fehler
Verfasst: Samstag 9. Februar 2013, 18:25
von Sirius3
@atarax: Welches Datenbanksystem benutzt Du?
Wie fragst Du den Standardwert ab?
SQlite macht es richtig, und ich glaube kaum, ein anderes Datenbanksystem verhält sich in diesem Punkt anders. Benutze auch bei vermeintlich konstanten Werten die Möglichkeit Variablen als Variablen anzugeben:
Code: Alles auswählen
cursor.execute('ALTER TABLE mytable ADD COLUMN newcolumn TEXT DEFAULT ?', ('Hallo Welt!',))
Das spart lästiges Nachdenken über Escape-Sequenzen.
Re: Leerzeichen in Default-Value verursacht Fehler
Verfasst: Sonntag 10. Februar 2013, 07:12
von atarax
Es geht hier um SQLite. Offenbar klappt es mit
Code: Alles auswählen
ALTER TABLE 'mytable' ADD COLUMN 'newcolumn' TEXT DEFAULT 'Hallo Welt'
doch. Ich hatte die neue Struktur der Datenbanktabelle mit
abgefragt und als Ergebnis
erhalten, woraus ich geschlossen habe, dass die einfachen Anführungszeichen nun Teil des Standardwertes wären. Eine Abfrage mit
hat dies aber nicht bestätigt.
Vielen Dank.