gpt4 book ai didi

tsql - 在 SQL 中对 IP 地址进行排序

转载 作者:行者123 更新时间:2023-12-01 04:39:39 26 4
gpt4 key购买 nike

我需要对我的 IP 列表进行排序。问题是我希望它们在第一部分的值之后排序,然后是第二部分,依此类推。

MYTABLE

DATA
20.1.2.1
100.1.1.1
20.1.10.1
80.8.8.8

此代码没有正确排序 IP

SELECT * FROM MYTABLE ORDER BY DATA

我希望得到这样的东西:

20.1.2.1
20.1.10.1
80.8.8.8
100.1.1.1

谁能帮帮我?

最佳答案

虽然它不是为 IP 地址设计的,但您可以使用 PARSENAME 通过在句点上拆分来将字符串分成多个部分。

我发现您的 IP 地址带有冒号而不是句点,因此您只需将所有冒号替换为句点。

因此,您可以这样做:

SELECT *
FROM MyTable
ORDER BY CAST(PARSENAME(REPLACE(Data, ':', '.'), 4) as int),
CAST(PARSENAME(REPLACE(Data, ':', '.'), 3) as int),
CAST(PARSENAME(REPLACE(Data, ':', '.'), 2) as int),
CAST(PARSENAME(REPLACE(Data, ':', '.'), 1) as int)

您可以将其放入查询分析器中以确认它是否有效:

SELECT *
FROM (
SELECT '20:1:2:1' AS Data UNION
SELECT '100:1:1:1' UNION
SELECT '20:1:10:1' UNION
SELECT '80:8:8:8'
) X
ORDER BY CAST(PARSENAME(REPLACE(Data, ':', '.'), 4) as int),
CAST(PARSENAME(REPLACE(Data, ':', '.'), 3) as int),
CAST(PARSENAME(REPLACE(Data, ':', '.'), 2) as int),
CAST(PARSENAME(REPLACE(Data, ':', '.'), 1) as int)

MSDN link了解更多信息。

关于tsql - 在 SQL 中对 IP 地址进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6640871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com