Sorting IP Address

May 24, 2007

Ada pertanyaan tentang Query SQL di salah satu milis, pertanyaan nya seperti ini

Bagaimana cara mengurutkan IP Address, seperti berikut

192.168.11.10
192.168.3.19
192.9.1.55
22.1.164.22
22.212.8.39
22.76.32.47
3.77.202.225
3.77.202.6
3.8.137.98

Aku memberikan solusi sebagai berikut :

Pertama Create Table


CREATE TABLE IPAddress
(IP VARCHAR(15) NOT NULL PRIMARY KEY)

Isi dengan dummy data


INSERT INTO IPADDRESS (IP) VALUES('192.168.11.10')
INSERT INTO IPADDRESS (IP) VALUES('3.77.202.225')
INSERT INTO IPADDRESS (IP) VALUES('22.1.164.22')
INSERT INTO IPADDRESS (IP) VALUES('3.8.137.98')
INSERT INTO IPADDRESS (IP) VALUES('192.9.1.55')
INSERT INTO IPADDRESS (IP) VALUES('3.77.202.6')
INSERT INTO IPADDRESS (IP) VALUES('22.76.32.47')
INSERT INTO IPADDRESS (IP) VALUES('192.168.3.19')
INSERT INTO IPADDRESS (IP) VALUES('22.212.8.39')

Jalankan Perintah berikut :


SELECT  IP
FROM IPADDRESS
ORDER BY RIGHT('000' + SUBSTRING(IP,1, CHARINDEX('.',IP,0)-1), 3)
+ RIGHT ('000' + SUBSTRING(IP,CHARINDEX('.',IP,0)+1, CHARINDEX('.',IP,CHARINDEX('.',IP)+1) - CHARINDEX('.',IP) - 1), 3)
+ RIGHT ('000' + SUBSTRING(IP,CHARINDEX('.',IP,CHARINDEX('.',IP) + 1)+1, CHARINDEX('.',IP,CHARINDEX('.',IP,CHARINDEX('.',IP)+1)+1 ) - CHARINDEX('.',IP,CHARINDEX('.',IP)+1) - 1), 3)
+ RIGHT ('000' + SUBSTRING(IP,CHARINDEX('.',IP, CHARINDEX('.',IP,CHARINDEX('.',IP) + 1) + 1)+1,3), 3)

Result yang dihasilkan :

3.8.137.98
3.77.202.6
3.77.202.225
22.1.164.22
22.76.32.47
22.212.8.39
192.9.1.55
192.168.3.19
192.168.11.10

Ada perintah yang lebih sederhana lagi gak?

 

0 comments

There are no comments yet...

Kick things off by filling out the form below.

Leave a Comment