2016-07-14 11 views
1

私はPostgreSQLのレコードのリストを次のように持っています。これらは実際には様々な書籍の一部です。 レコードは以下の形式で生成されます。複数の小数点を含むPostgreSQLからのレコードのソート

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列です。この

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 

のようにそれをソートしたいです。 Sorting records from Oracle with multiple decimal points (.)

select * from tbl_wo_kitting where wo_project_id = 1000033 
ORDER BY to_number(regexp_substr(line_no, '[^.]+', 1, 1)) NULLS FIRST 

無効な関数名REGEXP_SUBSTRを言って続けています。 そのように並べ替える機能は何ですか?

ありがとうございました。

+1

PostgreSQL。残念、間違ったフラグを選択しました。編集されました。 –

答えて

2

あなたは、アレイ上で、その後の並べ替え、整数配列に文字列を変換することによってこれを行うことができます:line_no_列に数値に変換できない値がある場合、これが失敗することを

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

注意を。

+0

ありがとうございます。実際に動作します。私はvarcharの値を最初に変換しなければならないし、ORDER BY(string_to_array(line_no、 '。')):: int [] –

関連する問題