繁体   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