oracle数据表中现在有一个字段tx_amt,为varchar形式,大部分数据形式长得像这样:‘5000.00’,但是也含有数据例如‘50000.00|238.00',现在我想截取例如‘50000.00|238.00'这种数据|之前的部分,并将其转为数值型,与例如‘5000.00’的数据一同计算,应该怎么做?给我SQL代码
时间: 2023-12-10 08:37:17 浏览: 76
GP数据库表结构转mysql库、oracle库 varchar类型字段长度批量处理excel_MYSQL_oracle_数据库
您可以使用SUBSTR和INSTR函数来实现需要的功能。具体地,先使用INSTR函数查找tx_amt字段中的‘|’位置,然后使用SUBSTR函数截取‘|’之前的部分,并使用TO_NUMBER函数将它转换为数值型。最后使用SUM函数将所有数值相加。
以下是示例代码:
```
SELECT SUM(
CASE
WHEN INSTR(tx_amt, '|') > 0
THEN TO_NUMBER(SUBSTR(tx_amt, 1, INSTR(tx_amt, '|')-1))
ELSE TO_NUMBER(tx_amt)
END
) AS total_tx_amt
FROM your_table;
```
其中,CASE语句用于判断tx_amt字段中是否含有‘|’,如果有则使用SUBSTR和TO_NUMBER函数截取‘|’之前的部分并转换为数值型,否则直接将tx_amt转换为数值型。最后使用SUM函数将所有数值相加得到总和。
阅读全文