小数点以下が3つ以下の場合は、parsenameを使用できます。次の例では、2つのバージョン番号を4文字の値に修正しているため、文字列の比較が行われます。例は「0015.0000.0000.0000.0000」です。
select (case when (right('0000'+coalesce(parsename(v1, 4), '', 4)) +
right('0000'+coalesce(parsename(v1, 3), '', 4)) +
right('0000'+coalesce(parsename(v1, 2), '', 4)) +
right('0000'+coalesce(parsename(v1, 1), '', 4))
) <
(right('0000'+coalesce(parsename(v2, 4), '', 4)) +
right('0000'+coalesce(parsename(v2, 3), '', 4)) +
right('0000'+coalesce(parsename(v2, 2), '', 4)) +
right('0000'+coalesce(parsename(v2, 1), '', 4))
)
then -1
when v1 = v2
then 0
else 1
end) as Comparison
parsename()は、名前の最大4つの部分でのみ機能することに注意してください。
並べ替えるだけの場合は、次のように機能します。
order by (right('0000'+coalesce(parsename(v1, 4), '', 4)) +
right('0000'+coalesce(parsename(v1, 3), '', 4)) +
right('0000'+coalesce(parsename(v1, 2), '', 4)) +
right('0000'+coalesce(parsename(v1, 1), '', 4))
)