Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# Sorting of number in PTO order

Posted on 2009-05-13
Medium Priority
390 Views
Hi ,

I have a table having  only one col. of varchar2 data type .
data are as follows :

1.2
2.0
2.21
8.0
2.2.1
3.0
4.1
3.1
5.1
3.2.4

I want to display is sorted order as :

1.2
2.0
2.2.1
2.21
3.0
3.1
3.2.4
4.1
5.1
8.0

How can I do it
in sql.

!Koushik
0
Question by:koushikonjob
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 3

LVL 74

Expert Comment

ID: 24381927
that's an interesting question because your sample data is sortable  "as is"

select your_column from your_table order by your_column

however, on the assumption that you want to sort your data from left-to-right in numeric order by each dot delimited number then try this...

This could be simplified by using a function for comparing values

I've made the assumption here that you will never have more than 9 numeric pieces to your string if that's not correct then adjust "level < 10" to some number big enough
I've also assumed no one number will be greater than 99 , if that's not correct then adjust "power(100,"  to some number bigger than the largest segment number
`````` SELECT   str
FROM   (SELECT   str,
cnt,
maxcnt,
n,
TO_NUMBER(SUBSTR(str, startpos, endpos - startpos + 1)) * POWER(100, maxcnt - n)
val
FROM   (SELECT   str,
cnt,
MAX(cnt) OVER () maxcnt,
n,
DECODE(n, 1, 1, INSTR(str, '.', 1, n - 1) + 1) startpos,
DECODE(n, cnt, LENGTH(str), INSTR(str, '.', 1, n) - 1) endpos
FROM   (SELECT   str, LENGTH(str) - LENGTH(REPLACE(str, '.', NULL)) + 1 cnt
FROM   yourtable) t,
(    SELECT   LEVEL n
FROM   DUAL
CONNECT BY   LEVEL < 10)
WHERE   n <= cnt))
GROUP BY   str
ORDER BY   SUM(val)
``````
0

LVL 74

Expert Comment

ID: 24394407
need anything else?
0

Author Comment

ID: 24395806
Sorry for late reply... ya its working fine.....

Thanks!!
Koushik
0

LVL 74

Accepted Solution

sdstuber earned 500 total points
ID: 24395851

I see this is your first question.  Welcome to  EE.

If you need nothing else on this topic then please close the question.
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Occasionally there is a need to clean table columns, especially if you have inherited legacy data. There are obviously many ways to accomplish that, including elaborate UPDATE queries with anywhere from one to numerous REPLACE functions (even withinâ€¦
In part one, we reviewed the prerequisites required for installing SQL Server vNext. In this part we will explore how to install Microsoft's SQL Server on Ubuntu 16.04.
Using examples as well as descriptions, step through each of the common simple join types, explaining differences in syntax, differences in expected outputs and showing how the queries run along with the actual outputs based upon a simple set of demâ€¦
This video shows how to configure and send email from and Oracle database using both UTL_SMTP and UTL_MAIL, as well as comparing UTL_SMTP to a manual SMTP conversation with a mail server.
###### Suggested Courses
Course of the Month9 days, 22 hours left to enroll