If the above assumptions are right, then you can do this:
;with sd(v)
as (select '10.0.1600.22'
union select '233.38550.10.23423.2'
union select '2353.345.4543'
union select '456433')
SELECT v, LEFT(v, ISNULL(NULLIF(p,-1),LEN(v)))
FROM sd
CROSS APPLY (SELECT CHARINDEX('.',v,CHARINDEX('.',v,CHARINDEX('.',v)+1)+1) - 1 p) f