【代码保留】IP地址排序(字符串分隔补齐)

功能:实现IP地址排序
思路:IP地址以点号分隔,直接排序会出现顺序混乱:
如:
10.143.19.138
192.168.1.1
如此两个IP地址是无法排序的(很明显)
将其转换成:
010.143.019.138
192.168.001.001
就可以进行排序了……
代码:
select  t.icf_path icf_path_o,lpad(substr(t.icf_path, 0 ,InStr(t.icf_path,  ' . ' 1 1 )), 4 , ' 0 ' )
    
|| lpad(substr(t.icf_path,InStr(t.icf_path, ' . ' , 1 , 1 ) + 1 ,InStr(t.icf_path, ' . ' , 1 , 2 ) - InStr(t.icf_path, ' . ' , 1 , 1 )), 4 , ' 0 ' )
    
|| lpad(substr(t.icf_path,InStr(t.icf_path, ' . ' , 1 , 2 ) + 1 ,InStr(t.icf_path, ' . ' , 1 , 3 ) - InStr(t.icf_path, ' . ' , 1 , 2 )), 4 , ' 0 ' )
    
|| lpad(substr(t.icf_path,InStr(t.icf_path, ' . ' , 1 , 3 ) + 1 ), 3 , ' 0 ' ) icf_path_sort
  
from  mat_ipconfig t
  
order   by  icf_path  asc

结果:
      icf_path_o        icf_path_sort
1
      10.143 . 15.1       010.143 . 015.001
2       10.143 . 15.10       010.143 . 015.010
3       10.143 . 15.100      010.143 . 015.100
4       10.143 . 15.101      010.143 . 015.101
5       10.143 . 15.102      010.143 . 015.102
6       10.143 . 15.103      010.143 . 015.103
7       10.143 . 15.104      010.143 . 015.104
8       10.143 . 15.105      010.143 . 015.105
9       10.143 . 15.106      010.143 . 015.106
10      10.143 . 15.107      010.143 . 015.107
11      10.143 . 15.108      010.143 . 015.108
12      10.143 . 15.109      010.143 . 015.109
13      10.143 . 15.11      010.143 . 015.011
14      10.143 . 15.110      010.143 . 015.110
15      10.143 . 15.111      010.143 . 015.111
16      10.143 . 15.112      010.143 . 015.112
17      10.143 . 15.113      010.143 . 015.113
18      10.143 . 15.114      010.143 . 015.114
19      10.143 . 15.115      010.143 . 015.115
20      10.143 . 15.116      010.143 . 015.116
21      10.143 . 15.117      010.143 . 015.117
22      10.143 . 15.118      010.143 . 015.118

你可能感兴趣的:(IP地址)