oracle中对字母加数字列的排序及截取字符串函数substr介绍

假设列名为No,类型为varchar2,100行数据里分别存放着W1~W100。

如果查询语句为:

select * from table order by No

会得到按W1,W10,W100,W11,W12,……,W2,W20,W21,……的排序。

如果我们想得到按照数字大小来排序怎么做呢?

一个解决方法是截去W,并将剩下的数字(注意:此时为varchar2类型)转变为number类型,再对其排序。

这里首先介绍一下substr函数。

substr
  Oracle中的截取字符串函数。

  语法如下:

  substr( string, start_position, [ length ] )

  参数分析:

  string

  字符串值

  start_position

  截取字符串的初始位置, Number型,start_position为负数时,表示从字符串右边数起。

  length

  截取位数,Number型

  其中,length为可选,如果length为空(即不填)则返回start_position后面的所有字符。

  意思就是:

  从start_position开始,取出length个字符并返回取出的字符串。
       其中string参数那也可以使用列名,表示对一个列的内容进行全部截取。于是我们可以这样排序:
        
     order by to_number(substr(No,2))
            
            这样就做到按数字大小进行排序了。

         欢迎大家访问我的独立技术博客 道合|SameIdeal.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值