如何在sql中从列中提取数值

6ie5vjzr  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(454)

我试图只从一个列中提取数值,该列包含排他数字的单元格和排他字母值的单元格,这样我就可以将该列与另一个只包含数值的列相乘。我试过了

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

还有

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

两者都不起作用。我得到了误差函数 ISNUMERIC(VARCHAR) 不存在。有人能建议吗?谢谢您!

3vpjnl9f

3vpjnl9f1#

它高度依赖于数据库管理系统。
在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中,您可以正常使用regex:

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

mysql dbms还内置了regex

syqv5f0l

syqv5f0l2#

试试这个,它测试文本值是否可以转换为数字。。。
从where(intent_volume ~'^([0-9]+[.]?[0-9]*|[.][0-9]+)$')=“t”中选择intent_volume

相关问题