Dada una tabla de "SoftwareReleases":
| id | version |
|  1 | 0.9     |
|  2 | 1.0     |
|  3 | 0.9.1   |
|  4 | 1.1     |
|  5 | 0.9.9   |
|  6 | 0.9.10  |¿Cómo produzco esta salida?
| id | version |
|  1 | 0.9     |
|  3 | 0.9.1   |
|  5 | 0.9.9   |
|  6 | 0.9.10  |
|  2 | 1.0     |
|  4 | 1.1     |
                    
                        postgresql
                                order-by
                                sorting
                                natural-sort
                                
                    
                    
                        Chris Betti
fuente
                
                
            fuente

string_to_array(regexp_replace(version, '[^0-9.]', '', 'g'), '.')::int[]SELECT max(string_to_array(build_version, '.')::int[]SQLFiddle: http://sqlfiddle.com/#!15/c9acb/1
Si espera más elementos en la cadena de versión, simplemente use más índices de matriz. Si el índice no existe, el resultado será nulo (por ejemplo
v[10], volveránull)fuente
10estar entre1y2.v[1]::intse trata. Lanza la cadena a un entero.crear extensión semver;
seleccionar id, versión de SoftwareReleases ordenar por versión :: semver;
http://www.pgxn.org/dist/semver/doc/semver.html
fuente