排序IP地址列

时间:2013-09-03 14:03:03

标签: hsqldb

我的表中有一列名为IPAddress的列。我想按排序顺序获取IPAddress。

IP Address:
8.123.10.124
192.23.34.45

如果我使用Order by IPAddress,我将输出为

192.23.34.45
8.123.10.124

因为按顺序排序为字符串。

但我希望输出为

8.123.10.124
192.23.34.45

如何为同一个人编写查询。 有没有办法在HSQL中分割字符串

1 个答案:

答案 0 :(得分:1)

首先需要将IP地址从字符串转换为int。例如,IP地址1.1.1.1将为001001001001,您可以使用以下逻辑

    while(ip[j]!='\0')
        {
         if(ip[j]!='.')
           a[i]=a[i]*10+ip[j]-'0';
         else
           i++;
         j++;
        }

之后你可以通过适当的数字(1e9,1e6,1e3,1e0)多次a [0],a [1] ....并添加。 但是,您需要采取一些预防措施,这样的字符串存储IP地址没有保存任何空白区域,并使用unsigned long long int以整数形式存储IP地址