I need to order my query by numeric parts.

I have a lot of rows looks like: 

```
'ABCD.1234.567'
'ABCD.1234-2345'
'ABCD.1234.1213.1'

```

So, I want firs order by first numeric part, then by second and then by therd.
Like this:

```
'ABCD.1234.567'
'ABCD.1234.1213.1'
'ABCD.1234-2345'

```

How can I do this?

**UPD:** I have tried to use PATINDEX function in order by, but can figure out how to do that for all numbers. 

```
order by s.product, (case when Patindex('% ,.,-%', s.product)=0 then 0
                        else Cast(SUBSTRING(s.product, Patindex('%[0-9]%', s.product), len(s.product)) as int) end)

```