2015-03-02 32 views
1

使用derby數據庫構建桌面應用程序...將數據插入包含具有數據類型「CHAR(10)」的多個列的表中時,數據庫將添加空格到價值。例如。我添加了5個字母的名字「德比」,剩餘的5個字母作爲空格添加。當我從DB中檢索這些值時,這個問題就開始了,這些空白空間也會與實際值一起被檢索出來。這不會發生在「VARCHAR」數據類型中。如何避免這種情況?Derby DB將白色空格添加到CHAR值

回答

3

這就是CHAR數據類型是如何在SQL標準中定義的。德比只是遵循這些規則as documented in the manual(和基本上每個DBMS這些規則的規定,在一些你可以禁用此不過)

沒有什麼可以做,以「避免」本 - 只需使用VARCHAR如果你不這樣做想要填充。

我個人認爲:CHAR數據類型現在基本上是無用的。在幾乎每個DBMS中,VARCHAR更高效(因爲它需要更少的存儲空間),並且不會受到這種所需但惱人的填充行爲的影響。

+0

謝謝你的信息...現在我使用在java中定義的修剪函數,同時檢索值...它有點幫助! – Frostem 2015-03-02 18:44:37

+0

@Frostem:使用'trim()'是一個醜陋的解決方法。您應該使用正確的數據類型('varchar')。只需停止使用'char'(對於任何DBMS都是如此) – 2015-03-02 18:50:42

+0

在我目前的項目中,大部分數據庫工作已經完成。現在改變任何東西都會讓我有很多工作要做。我會在下一次考慮你對VARCHAR的建議! – Frostem 2015-03-03 04:07:31