簡體   English   中英

oracle中的“ SELECT 1 FROM…”返回十進制類型

[英]“SELECT 1 FROM … ” in oracle returns a decimal type

我從下面的ORACLE“ SELECT 1 AS X FROM ...”中的示例查詢獲取數據表。

當我使用dr.Field(“ X”)選擇X時,它給了我錯誤。 我發現它返回為十進制數據類型。

在MSSQL中使用相同的語句沒有問題,我有int數據類型。

任何解決方法或解決方案?

Oracle中的整數是精度為0的數字。由於未指定大小(可以大於16),因此將其強制轉換為十進制。

嘗試將其強制轉換為number(16,0),您應該沒問題。

對於建議ODP.NET的人們:它也有同樣的問題。

您的前端代碼錯誤地自動檢測了字段的類型。 您應該可以將其改寫為整數。 如果沒有使用語言/ etc的更多詳細信息,就很難更具體了。

如果您知道該列的類型應為int並假定其不為null:

int x = Convert.ToInt32 (dr.Field ["X"]);

這對於為該列返回int的其他數據庫提供程序不會有任何影響。

如果要更改Oracle查詢以返回int代替:

SELECT CAST(1 AS INTEGER) FROM ...

我家里沒有甲骨文的書,但是顯式轉換或強制轉換為整數可能是最好的選擇。 (說到Oracle查詢,不是您的C#檢索結果,盡管您也可以在那里進行轉換。)就Oracle而言,“ 1”是模棱兩可的。

為了獲取整數而不是十進制,我需要做的是:

從Dual中選擇投放(1作為NUMBER(9,0))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM