質問

SQLを使用してDerbyでVARCHARをテーブルフィールド長に自動的に切り捨てるにはどうすればよいですか

具体的に:

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

SQLExceptionをスローします:

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

この例外を抑制する簡単な方法はありますか?

役に立ちましたか?

解決

いいえ。メタデータを確認した後、それを切り落とす必要があります。または、メタデータを毎回チェックしたくない場合は、コードとデータベースの両方を同期させる必要があります。しかし、それは大したことではなく、バリデーターでの通常の慣行です。

他のヒント

varcharは、挿入する前にトリミングできます。 挿入スクリプト/手順でトリム関数を使用します。

Derbyに慣れていませんが、MSSQLでもまったく同じことを行い、切り捨てエラーを回避するためにトリムを使用します(完全なデータが不要な場合のみ)。 varchar

SUBSTR を使用できます:

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

準備済みステートメントを使用する場合:

INSERT INTO A B VALUES (SUBSTR(?, 1, 2));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top