2013-11-02 40 views
7

使用IIF varchar字段,當我看到奇怪的結果來執行這個查詢白色空間中更新火鳥

update sd_invodt set line_type=iif(is_promo=1, 'campaign', 'item') 

時LINE_TYPE字段中的值將是"item "。有價值的空白。 但是當我執行此查詢時

update sd_invodt set line_type='item' 

我沒有得到空格。

現在我必須使用裝飾的解決辦法

update sd_invodt set line_type=trim(iif(is_promo=1, 'campaign', 'item')) 

我用最新的火鳥2.5。 Line_type是一個varchar(15)。

火鳥的這個錯誤?

編輯

我一直在使用新的數據庫進行測試,但問題依然存在。

回答

4

iif()的結果類型取決於輸入,如果字符串結果類型似乎爲char(x),其中x是最長輸入字符串的長度。因此,"item"將填充4個空格,以使其與「廣告系列」一樣長。我認爲這是通過設計,但您可能想要輸入FB issuetracker的票。

因此iif()返回"item "在第一個參數爲false的情況下,當您將空間存儲到varchar字段它們被保留。

+3

這不是一個錯誤,請參閱[CORE-4147](http://tracker.firebirdsql.org/browse/CORE-4147) –