2014-09-02 57 views
0

我下面的表中創建:SQLite的:數學運算的結果始終是一個文本

CREATE TABLE test (a INT,b INT); 

我插入了一些數據後:

INSERT INTO test VALUES(1,2); 

當我執行這個SELECT:

SELECT cast(b as real) as x, a * b as y FROM teste 

字段「x」和「y」以數據類型TEXT返回。我正在使用Delphi和SQLiteStudio 2.1.5,並且都返回相同的數據類型。

我需要該字段x是真實的,y是int。

有人可以幫助我嗎?

+1

與其他數據庫不同,在Sqlite中,列類型是「建議」。 Delphi帶有一系列將數字的文本表示轉化爲數字的函數(參見例如OLT中的IntToStr等),然後再回來,所以這個Sqlite的怪癖並不能真正限制你在Delphi代碼中做什麼。 – MartynA 2014-09-02 12:34:01

+1

[適用於我](http://www.sqlfiddle.com/#!5/261a8/1)。你如何確定數據類型? – 2014-09-02 12:48:38

回答

0

對我來說奇怪的是,在Sqlite中,列類型是「推薦」。但分析這個我改變了我的程序。我用正確的類型手動創建了這些字段。所以程序開始工作。

問題是當你打開一個查詢和Delphi自動創建列。在這種情況下,帶有轉換或數學運算的列就像文本字段一樣創建。

+0

你在Delphi應用程序中使用了哪些組件? – TLama 2014-09-02 13:51:57

+0

我正在使用FireDAC(TFDQuery) – user3877647 2014-09-03 13:50:03

0

Sqlite沒有列數據類型。這只是文字。根據你的表情,它會嘗試爲你做轉換。對於你的數學表達式,你需要做一個演員才能讓delphi創建你想要的列類型。