从SELECT语句创建字符串

时间:2015-11-19 11:22:15

标签: sql oracle

我们假设我有一个表格,示例行如下所示:

ID    PAYMENT_BASE    PAYMENT_A    PAYMENT_B    PAYMENT_C    PARTNER_ID    TRANSFER_TITLE
1     123.0           15.12        30           15.91        123456        null

现在我想根据此表中的数据生成一个字符串,并更新TRANSFER_TITLE列。

我期望在TRANSFER_TITLE中看到的内容如下:

123,00-PA 15,12-PB 30,00-PC 15,91/123456

非常重要的事情:格式10中的数字应为10,00。格式12.1中的数字应为格式12.10,格式12.12中的数字应保持不变,但只用逗号代替点 - 12,12 ...

甚至可以在Oracle中使用吗?

2 个答案:

答案 0 :(得分:2)

首先:

如何在TRANSFER_TITLE中获取数据

update table
set TRANSFER_TITLE = ID || PAYMENT_BASE || PAYMENT_A || PAYMENT_B || PAYMENT_C || PARTNER_ID

要格式化数字以返回两位或更多位小数,我会执行以下操作:to_number(to_char(PAYMENT_BASE), 2)

如果您需要将逗号更改为dot,请将数字字段设为varchar,然后执行REPLACE(TRANSFER_TITLE, '.',',')

希望能得到一些帮助。

答案 1 :(得分:0)

试试这个:

update table set TRANSFER_TITLE = replace(to_char(PAYMENT_BASE, 'fm9999999.90'),'.',',') || '-PA '
|| replace(to_char(PAYMENT_A, 'fm9999999.90'),'.',',') || '-PB ' 
|| replace(to_char(PAYMENT_B, 'fm9999999.90'),'.',',') || '-PC '
|| replace(to_char(PAYMENT_C, 'fm9999999.90'),'.',',') || '/' || PARTNER_ID