2009-06-19 30 views
2

如何使用SQL將Derby中的VARCHAR截斷爲表中字段長度AUTOMATICALLY?將VARCHAR截斷爲Derby中的特定長度AUTOMATICALLY

具體來說:

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. 

有沒有一種簡單的方法來抑制這種異常?

回答

3

不可以。您應該在檢查元數據後切斷它。或者如果你不想每次都檢查元數據,那麼你必須保持你的代碼和數據庫同步。但那不是什麼大不了的事情,它是驗證者的慣例。

+0

此表無處不在。保持代碼同步並不容易。 – 2009-06-19 10:10:01

0

您可以在插入之前修剪varchar。 在插入腳本/過程中使用修剪功能。

我對Derby不熟悉,但是在MSSQL中,我做了完全相同的事情,使用trim來避免截斷錯誤(只在不需要完整數據的地方),更加可取的做法是增加長度varchar

+0

增加VARCHAR這裏沒有希望的,我相信。他沒有截斷的問題,截斷甚至是他的一個更好的行爲。其次,只修剪空間。 – 2009-06-19 08:57:31

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)); 
相關問題