从PostgreSQL中排序多个小数点(。)的记录

时间:2016-07-14 07:18:39

标签: postgresql sorting

我在PostgreSQL中有一个记录列表,如下所示,这些记录实际上是各种书籍的一部分 记录以下列格式生成。

<h:selectOneMenu id="employeeDropdown" value="#{employeeController.activeEmployee}">
       <s:selectItems id="activeEmployeeList" value="#{employeeController.activeEmployees}" var="emp"   itemValue = "#{emp}" label="#{emp.contact.firstName}"   />
</h:selectOneMenu>

我想按照这样排序

1            
7.1        
6.2   
7.1    
7.4   
6.8.3   
6.8.2     
10     
1.1     
7.6     
6.1     
11    
8.3     
8.5     
1.1.2      
6.4      
6.6      
8.4      
1.1.6       
6.8.1        
7.7.1          
7.5          
7.3  

它是一个varchar列,所以我尝试使用此处列出的内容。 Sorting records from Oracle with multiple decimal points (.)

 1         
 1.1          
 1.1.2          
 1.1.6             
 6.2              
 6.4    
 6.5    
 6.6    
 6.7    
 6.8.1    
 6.8.2    
 6.8.3    
 7.2    
 7.3    
 7.4    
 7.5    
 7.6    
 7.7.1    
 7.7.2    
 8.3    
 8.4    
 8.5
 10

它一直说无效的函数名称regexp_substr。 这种方式排序的功能是什么?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

您可以通过将字符串转换为整数数组,然后对数组进行排序来完成此操作:

select * 
from tbl_wo_kitting 
where wo_project_id = 1000033
ORDER BY (string_to_array(line_no, '.'))::int[]

请注意,如果在line_no_列中无法将值转换为数字,则会失败。