| From: | George Essig <george_essig(at)yahoo(dot)com> |
|---|---|
| To: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: Sorting by numerical order |
| Date: | 2004-03-15 20:12:12 |
| Message-ID: | 20040315201212.93490.qmail@web80206.mail.yahoo.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
Steve Atkins wrote:
>
> Couldn't you just use a regex match? foo ~ '-?[0-9]+(\.[0-9]+)?' or
> somesuch.
>
> Cheers,
> Steve
This helps a lot. I used a similar regular expression, the substring function, and the order by
clause to do the following:
test=# select * from sort_test order by name;
name
--------
10
aaa
abc
abc 1
abc 10
abc 2
abc 20
(7 rows)
test=# select name, substring(name from '^(.*?)([-+]?[0-9]+(\\.[0-9]+)?)?$') as start_string,
substring(name from '[-+]?[0-9]+(\\.[0-9]+)?$')::float as end_number from sort_test order by
start_string, end_number;
name | start_string | end_number
--------+--------------+------------
10 | | 10
aaa | aaa |
abc | abc |
abc 1 | abc | 1
abc 2 | abc | 2
abc 10 | abc | 10
abc 20 | abc | 20
(7 rows)
George Essig
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Shilong Stanley Yao | 2004-03-15 20:14:40 | Re: Character escape in "CREATE FUNCTION ..." |
| Previous Message | Edwin Pauli | 2004-03-15 20:11:20 | Re: PostgeSQL problem (server crashed?) |