Frage

Wie kann ich einen Varchar mithilfe von SQL automatisch in Derby in der Tabellenfeldlänge verkürzen?

Um genau zu sein:

CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES ('1234');

würde eine SQLEXception werfen:

A truncation error was encountered trying to shrink VARCHAR '123' to length 2.

Gibt es eine einfache Möglichkeit, diese Ausnahme zu unterdrücken?

War es hilfreich?

Lösung

Nein, Sie sollten es abhacken, nachdem Sie die Meta-Daten überprüft haben. Oder wenn Sie die Meta-Daten nicht jedes Mal überprüfen möchten, müssen Sie sowohl Ihren Code als auch Ihre Datenbank synchronisieren. Aber das ist keine große Sache, es ist eine übliche Praxis bei Validatoren.

Andere Tipps

Sie können den Varchar vor dem Einfügen abschneiden. Verwenden Sie die Trim -Funktion in Ihrem Einfügenskript/-prozedur.

Ich bin mit Derby nicht vertraut, aber in MSSQL mache ich genau dasselbe und verwende TRIM, um einen Abkürzungsfehler zu vermeiden (nur wenn ich nicht die vollständigen Daten benötige), es ist viel bevorzugt, die Länge des VARCHAR zu erhöhen

Sie können verwenden SUBSTR:

CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES (SUBSTR('1234', 1, 2));

Falls Sie vorbereitete Aussagen verwenden:

INSERT INTO A B VALUES (SUBSTR(?, 1, 2));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top