본문 바로가기

프로그래밍언어/ASP.NET

SQL 에서 값 부를 때 소수점(IP주소 같은) 정렬하기 쿼리문

DB에서 값을 불러오다보면, IP주소 소수점이 들어간 것이 정렬이 제대로 되어있지 않을것이다.

예를 들면,

 

203.207.231.1

203.207.231.10

203.207.231.100

203.207.231..2

203.207.231.20

203.207.231.200

 

라는 식으로 되어 있는 이를 1, 2, 3, 4, … 100, 101, 102…. 바꾸기 위해선

불러오는 쿼리문의 정렬을 정의해줄 필요가 있다.

 

다음과 같이 정의 해주면된다.

 

ORDER BY CAST(PARSENAME(ipaddress, 4) AS int)

, CAST(PARSENAME(ipaddress, 3) AS int)

, CAST(PARSENAME(ipaddress, 2) AS int)

, CAST(PARSENAME(ipaddress, 1) AS int)

 

셀렉트 문과 같이 정해주게 되면,

SelectCommand="SELECT * FROM [iptable] ORDER BY CAST(PARSENAME(ipaddress, 4) AS int)

, CAST(PARSENAME(ipaddress, 3) AS int)

, CAST(PARSENAME(ipaddress, 2) AS int)

, CAST(PARSENAME(ipaddress, 1) AS int);

 

SELECT에 본인이 뽑아오고 싶은 것을 써주고, FROM 뒤에 불러오는 테이블명을 적어주고, 다음에 ORDER로 정렬을 해주면 되겠다.

출처: http://mnworld.co.kr