2

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.

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

4

3 に答える 3

3

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

于 2009-06-19T08:52:48.697 に答える
0

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

私は Derby には詳しくありませんが、MSSQL ではまったく同じことを行い、trim を使用して切り捨てエラーを回避します (完全なデータが必要ない場合のみ)。varchar の長さを増やす方がはるかに望ましいです

于 2009-06-19T08:51:47.670 に答える
0

使用できますSUBSTR

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

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

INSERT INTO A B VALUES (SUBSTR(?, 1, 2));
于 2015-09-15T12:59:55.313 に答える