我有一个表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,但这也提供了相同的输出。
答案 0 :(得分:3)
只需将格式掩码更改为:
'099G999G999'
(注意前导'0')
答案 1 :(得分:0)
在任何数据库中使用前置0的替代方法如下:
right('000000000000' || cast(<val> to varchar(100)), <numdigits>)
当然,有些数据库使用“concat()”或“+”而不是“||”连接。