Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Oracle SQL中将字符串列转换为数值_Sql_Oracle - Fatal编程技术网

在Oracle SQL中将字符串列转换为数值

在Oracle SQL中将字符串列转换为数值,sql,oracle,Sql,Oracle,我有两列作为字符串,但只存储数值。 我想获取这两列的总和,并使用Oracle SQL将其显示为第三列 有人能帮我吗 注意:我不能将PL/SQL用于此如果您确实提供了有关表、列和数据外观的更多详细信息,这将有所帮助。但是,假设一个表有2个varchar2列,其中包含数字数据,则可以执行以下操作: SELECT col1, col2, to_number(col1) + to_number(col2) as sum_of_cols FROM your_table; 这是可能的解决方案

我有两列作为字符串,但只存储数值。 我想获取这两列的总和,并使用Oracle SQL将其显示为第三列

有人能帮我吗


注意:我不能将PL/SQL用于此

如果您确实提供了有关表、列和数据外观的更多详细信息,这将有所帮助。但是,假设一个表有2个
varchar2
列,其中包含数字数据,则可以执行以下操作:

SELECT col1, col2,
       to_number(col1) + to_number(col2) as sum_of_cols
FROM your_table;

这是可能的解决方案之一:

select tax, amount, 
    case when tax is not null and amount is not null 
          and replace(translate( tax,    '123456789', '000000000' ), '0', '') is null
          and replace(translate( amount, '123456789', '000000000' ), '0', '') is null
        then to_number(tax)+to_number(amount) 
        else 0
    end summed 
  from teststr 

你可以阅读
关于其他几种方法,包括正则表达式和PLSQL函数,如果您的数据包含诸如
'23.96'

创建表TESTSTR(“TAX”VARCHAR2(5)、“AMOUNT”VARCHAR2(5))之类的值,这些方法可能很有用;这是data TAX null 12 22 ab \n amount 12 null 12 10如果它得到数值,我想添加它应该添加的两列,否则它应该将它们设置为零,并在遇到任何nu时进行计算;ll/string value你能试着把这些额外的解释移到问题的主体中吗?这样其他人也会看到他们。这样可以更好地格式化数据。有了这些评论,我很难理解数据的格式。这里可以有小数,还是只有数字?为什么不总是数字呢?为什么您的数据不一致?为什么不使用正确的数据类型(所以我的理解是,当你的问题是:“我有两列作为字符串,但只存储数值”这听起来不是真的。那么,如果你在同一列中有一个混合的数据类型包,并且你想在没有错误的情况下进行数值转换,我不知道没有PL/SQL的情况下怎么做。也许你应该考虑清理数据并使用合适的数据类型来解决问题中的列。