1

我有一个以列 node_id 为数字的表,其中,

node_id
0
2000
300300300
400400400

我想要得到的是将此数字转换为字符串,并在右边每第三个数字后添加“-”。所以预期的输出是,

node_id
000-000-000
000-002-000
300-300-300
400-400-400

这是我正在使用的查询,

select TO_CHAR( lpad(t1.node_id,9,'0'), '999G999G999', 'NLS_NUMERIC_CHARACTERS="-"'), node_id from table t1;

我得到的输出是,

node_id
0
2-000
300-300-300
400-400-400

我的问题是我还需要在每条记录前面加上“0”,使总长度为 11。我尝试在 lpad 周围立即添加 to_char,以便将 lpad 输出转换为 varchar,但这也给出了相同的输出。

4

2 回答 2

3

只需将格式掩码更改为:

'099G999G999'

(注意前导“0”)

于 2012-05-09T11:49:24.967 回答
0

在任何数据库中添加 0 的替代方法如下:

right('000000000000' || cast(<val> to varchar(100)), <numdigits>)

当然,有些数据库使用“concat()”或“+”而不是“||” 用于连接。

于 2012-05-09T14:30:11.337 回答