我在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 =>