DerbyでVARCHARを特定の長さに自動的に切り捨てます
質問
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));
所属していません StackOverflow