例如,varchar值爲「40.00」,並且希望將其與where子句中的運算符「>」或「<」一起使用。我如何使用它?Oracle。將varchar值「40.00」轉換爲數字
1
A
回答
4
您可以將varchar轉換爲像一個十進制:
select *
from YourTable
where CAST(YourField AS decimal) < 40.00
或者使用TO_NUMBER()功能:
select *
from YourTable
where TO_NUMBER(YourField) < 40.00
如果該字段並不總是一個數字,你有一個相對較新的Oracle安裝時,您可以選擇行數字爲您的數字字段,如:
select *
from (
select *
from YourTable
where regexp_like(YourField, '^-?[[:digit:],.]+$')
) sub
where TO_NUMBER(YourField) < 40.00
5
您可以使用TO_NUMBER函數將其轉換爲一個數字:
WHERE TO_NUMBER(col) > 39
但是要注意:如果表中的任何行有在該列一個非數字進入,查詢可能會失敗,出現錯誤:
SQL> create table t (col varchar2(10));
Table created.
SQL> insert into t values ('39.00');
1 row created.
SQL> insert into t values ('40.00');
1 row created.
SQL> insert into t values ('41.00');
1 row created.
SQL> insert into t values ('xxx');
1 row created.
SQL> select * from t where to_number(col) > 39;
ERROR:
ORA-01722: invalid number
4
如果要比較它們的號碼,然後使用TO_NUMBER函數Oracle 11g doc
我想建議,如果你要這樣對待一個號碼最好的辦法是改變你的架構/ DDL,以便40.00是存儲在一個數字字段中。這意味着比較起作用,訪問效率更高,例如,其中字段> x將使用索引 - 其中TO_NUMBER(字段)> x不使用索引,並且可以在插入時捕獲數據錯誤,而不必運行報告來查找非數字數據。
0
AND (TO_NUMBER(NVL(NAME_FIELD,'0'),'99999999D999','nls_numeric_characters=,.') > 0)
相關問題
- 1. Oracle,將varchar轉換爲數字
- 2. Oracle將Varchar字段轉換爲數字如何將其轉換回Varchar
- 3. 將數值轉換爲Varchar
- 4. 將varchar轉換爲數字
- 5. 將varchar轉換爲數字
- 6. 將Varchar值轉換爲散列值:varchar
- 7. 將LONG轉換爲Oracle中的varchar
- 8. T-SQL:將varchar轉換爲數值
- 9. JPQL:將varchar轉換爲數字
- 10. 將VARCHAR轉換爲數字SQL Server
- 11. 將varchar轉換爲數字時出錯
- 12. 將varchar轉換爲整數
- 13. 將mysql LONGTEXT值轉換爲VARCHAR值?
- 14. 將varchar值「」....「'轉換爲數據類型int時轉換失敗
- 15. 將varchar值轉換爲數據類型時轉換失敗int
- 16. PostgreSQL將varchar轉換爲數字並得到平均值
- 17. SQL Server鍵值對將varchar轉換爲數字無例外
- 18. 將整數轉換爲轉換後的varchar T-SQL字段
- 19. 如何將varchar列值轉換爲int?
- 20. 如何將varchar轉換爲布爾值
- 21. DB2:將日期值轉換爲varchar
- 22. 如何將varchar值轉換爲datetime?
- 23. 錯誤:在將varchar值'10.8'轉換爲
- 24. 使用Hibernate在Oracle上將varchar轉換爲整數
- 25. 從VARCHAR轉換值爲int
- 26. ORACLE:轉換VARCHAR到TIMESTAMP/TIMEZONE
- 27. Oracle:將IPv4地址轉換爲數字?
- 28. 將Varchar轉換爲雙份
- 29. SQL - 將varchar轉換爲datetime
- 30. 將varchar轉換爲nvarchar
+1指出的缺陷。 – 2009-10-28 14:14:06