我在做一个功能的时候,明细的行项号是五位数,如: 00001,00002,,00010 这种形式,那么我们必须得在行项号前面补齐0
由于使用的是Oracle数据库,发现Oracle里面的 to_char 方法支持转换,哈哈,就看下面的例子吧。
SELECT DATA1,DATA2,DATA3 FROM DETAILS;
假设以上是我的查询语句,我要将 DETAILS 表的数据导入到其他 DETAILS 表,这个时候我就郁闷了,我的行项号如何处理呢,难道我要在程序里面一条条的处理吗?
结果是 NO,不用的,我们来进行一个简单的改变,改变为以下SQL语句
SELECT ROWNUM,DATA1,DATA2,DATA3 FROM DETAILS;
结果发现以上SQL语句还是不能满足需求,前面没有自动补0,好吧,切入正题,看看我们 to_char 改如何用
SELECT TO_CHAR(ROWNUM,'00000') LINE,DATA1,DATA2,DATA3 FROM DETAILS;
嘿嘿,是不是发现前面自动补0了啊,不对,前面怎么多了个空格呢,好吧,去掉一下空格,那么最终的SQL为
SELECT TRIM(TO_CHAR(ROWNUM,'00000')) LINE,DATA1,DATA2,DATA3 FROM DETAILS;
TO_CHAR(参数1,参数2) 解说:
参数1: 原字符,如我们的行项 1,2,3,4,5,6...10
参数2:需要在前面填补的字符,如 00000 ,则为总共5位字符,将原字符从右边开始填充。
以上都是个人理解,没有去看Oracle官方文档。