oracle数据库中SQL的lpad函数实现补零操作

2012年02月24日 其他资源 6条评论 阅读10128次

今天工作上遇到这样一个问题。是oracle数据库中SQL实现补零操作的问题。、

以下是当时问题的环境还原。

oracle11g下有一数据表、表名A

A表中有CD1 ,CD2两个字段,CD2字段最大字符长度是5.

现客户要求检索出A表的所有数据,并要求使用CD2字段升序排列。

本来很简单的一个sql就搞定,但偏偏CD2是个很特殊的字段,该字段被定义成varchar2类型,但数据却大部分存储的是正整数数字,在下述情况中,排序就有问题了

CD2字段值为1,2,11,22.  如果简单使用order by CD2。得到的结果将会是1,11,2,22

但客户希望的结果是1,2,11,22  。。

要达到上述结果,很容易让人想到的是利用to_number()函数把CD2字段的值转换成为数字类型。

很遗憾的是,前面也有所提到,CD2字段也有可能会有子母的存在,如果对字母也使用to_number()函数,那么sql语句将会发生内部错误而无法执行。

到这里 就想到先把CD2字段进行补位操作,因为CD2最大字符长度是5位,所以,一个将CD2字段补零使其满5位再进行排序的思路就出来了。

在网络上搜索补位操作,看到了lpad函数。lpad( 要补位的字符, 要补满的字符长度, 使用什么字符来补位)

基于以上语法,得到以下sql语句

select *

from A

order by lpad(CD2,5,'0')

执行,果然,出效果了。

看来还是lpad函数帮了大忙。

 

另外,在简单说一下lpad函数。

lpad不仅能补位,还能截位。

例如:

 

  SQL> select lpad('abcde',2) from dual;

 

  LPAD('ABCDE',2) 将得到ab的结果。说明lpad函数截取了'abcde'的从 数起前两位

 

  与lpad函数对应的是rpad函数:

 

  rpad函数从右边对字符串使用指定的字符进行填充,语法格式与lpad格式相同:

 

  rpad(string,padded_length,[pad_string])

以上。在实际项目需要时,可以更加灵活使用。

分享本文至:

WRITTEN BY

avatar
本文标签:oraclesqllpad
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

6 条评论

  1. avatar 天津卷帘门厂

    操作很给力哈

  2. avatar 上海做网站

    谢谢分享,学习了

  3. avatar 粉丝批发

    走过路过支持一下嘿嘿

  4. avatar 刘稻SEO

    技术贴,支持!欢迎博主回访!

  5. avatar 影楼网络营销

    不错,过来学习一下了

  6. avatar 柚格利

    技术贴,学习一下

欢迎留言




用户登录

sitemap