0
我在varchar
列中有此数据,它们在数字的末尾有符号并且希望转换为数字,并且符号必须反映在最终结果中,例如91.99-应该是-91.99将Varchar转换为双份
的样本数据
Curr_bal
934.75+
9123.05+
91.99-
9.77-
如何转换,并使用SQL命令处理这2种情况。真的需要你的帮助。顺便说一下,我试图为DB2编写SQL。
我在varchar
列中有此数据,它们在数字的末尾有符号并且希望转换为数字,并且符号必须反映在最终结果中,例如91.99-应该是-91.99将Varchar转换为双份
的样本数据
Curr_bal
934.75+
9123.05+
91.99-
9.77-
如何转换,并使用SQL命令处理这2种情况。真的需要你的帮助。顺便说一下,我试图为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 =>
tqvm @KevinBeck,真的很感激:) –
*** *** SQL只是*结构化查询语言* - 许多数据库系统中使用的语言,但不是一个数据库产品...很多东西都是特定于供应商的 - 所以我们真的需要知道您正在使用的数据库系统**(和哪个版本)(请相应地更新标签)。 –
I' m确保'substr()','concat()'和'to_number()'(或者等效的)的组合应该能够实现。 – mustaccio
我是这个DB2 SQL的新手,不知道该怎么做。感谢有人能给我一个样本编码。 –