如果你有不超過三個小數點,那麼你可以使用parsename。以下將兩個版本號修正爲具有4個字符的值,所以字符串比較owrks。你的例子是「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()僅適用於最多四個部分的名稱。
如果你只是想進行排序,那麼下面的工作:
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))
)
雖然我不理解函數部分,但示例用法看起來很簡單。非常感謝! –