Sql 将Varchar转换为double

Sql 将Varchar转换为double,sql,db2,varchar,Sql,Db2,Varchar,我在varchar列中有这些数据,这些数据在数字的末尾有符号,希望转换为数字,符号必须反映在最终结果中,例如91.99-应该是-91.99 样本数据 Curr_bal 934.75+ 9123.05+ 91.99- 9.77- 如何使用SQL命令转换和处理这两个场景。我真的需要你的帮助。 顺便说一下,我正在尝试为DB2编写SQL 可以使用substr()和length()从varchar中提取符号(最后一个字符)和值(从第一个到第二个到最后一个字符)。然后使用连接操作符将其与前面的标志粘在一起

我在
varchar
列中有这些数据,这些数据在数字的末尾有符号,希望转换为数字,符号必须反映在最终结果中,例如91.99-应该是-91.99

样本数据

Curr_bal
934.75+
9123.05+
91.99-
9.77-
如何使用SQL命令转换和处理这两个场景。我真的需要你的帮助。 顺便说一下,我正在尝试为DB2编写SQL

可以使用substr()和length()从varchar中提取符号(最后一个字符)和值(从第一个到第二个到最后一个字符)。然后使用连接操作符将其与前面的标志粘在一起。像这样:

db2 => select curr_bal, substr(curr_bal,length(curr_bal),1) || substr(curr_bal,1,length(curr_bal)-1) from signswap;

CURR_BAL                         2                                
-------------------------------- ---------------------------------
934.75+                          +934.75                          
9123.05+                         +9123.05                         
91.99-                           -91.99                           
9.77-                            -9.77                            

  4 record(s) selected.

db2 =>
一旦前面有了符号,就可以将其转换为数字,或者在某些情况下DB2会将其转换为数字。例如,可以将其插入到另一个具有数字类型列的表中,而无需显式强制转换:

db2 => create table numeric(curr_bal decimal(12,2));
DB20000I  The SQL command completed successfully.
db2 => insert into numeric select substr(curr_bal,length(curr_bal),1) || substr(curr_bal,1,length(curr_bal)-1) from signswap;
DB20000I  The SQL command completed successfully.
db2 => select * from numeric;

CURR_BAL      
--------------
        934.75
       9123.05
        -91.99
         -9.77

  4 record(s) selected.

db2 => 

SQL只是结构化查询语言-一种被许多数据库系统使用的语言,但不是一种数据库产品。。。很多事情都是特定于供应商的-因此我们确实需要知道您使用的是什么数据库系统(以及哪个版本)(请相应地更新标记)…我确信
substr()
concat()
to_number()
(或等效版本)的组合应该起作用。我对这种DB2 SQL是新手,不知道该怎么做。如果有人能给我一个编码示例,我将不胜感激。tqvm@KevinBeck,非常感谢:)