簡體   English   中英

如何從 SQL 中的列中提取數值

[英]How to extract numeric values from a column in SQL

我試圖從包含完全是數字的單元格和完全是字母值的單元格的列中提取數值,以便我可以將該列與僅包含數值的另一列相乘。 我努力了

SELECT trim(INTENT_VOLUME) 
from A
WHERE ISNUMERIC(INTENTVOLUME) 

並且

SELECT trim(INTENT_VOLUME) 
from A
WHERE ISNUMERIC(INTENTVOLUME) = 1

兩者都不起作用。 我收到錯誤 Function ISNUMERIC(VARCHAR)不存在。 有人可以建議嗎? 謝謝!

它高度依賴於 DBMS。

在 SqlServer 中,您的內置功能有限,因此下一個查詢可能不適用於您的數據的所有變體:

select CAST(INTENT_VOLUME AS DECIMAL(10, 4)) 
from A 
where INTENT_VOLUME LIKE '%[0-9.-]%'
and INTENT_VOLUME NOT LIKE '%[^0-9.-]%';

在 Oracle 中,您可以正常使用正則表達式:

select to_number(INTENT_VOLUME) 
from A 
where REGEXP_LIKE(INTENT_VOLUME,'^[-+]?[0-9]+(\.[0-9]+)?$');

MySQL DBMS 也內置了正則表達式

試試這個,它測試該文本值是否可以轉換為數字......

select intent_volume from a where (intent_volume ~ '^([0-9]+[.]?[0-9]*|[.][0-9]+)$') = 't'

暫無
暫無

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

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