제가요 IP 정렬을 하려고 하는데 문제는 이것이 문자형이더라고요 1.1.1.1 1.1.2.1 1.1.3.1 1.1.10.1 1.1.12.1 뭐 이런 식으로 있는걸 정렬을 하면 1.1.1.1 1.1.10.1 1.1.12.1 1.1.2.1 1.1.3.1 이런식으로 나와버려요 문자형이라서 그런가...
김영대
•
2000.01.21 19:57
허진 wrote:
> 제가요
>
> IP 정렬을 하려고 하는데
>
> 문제는 이것이 문자형이더라고요
>
> 1....
> 제가요
>
> IP 정렬을 하려고 하는데
>
> 문제는 이것이 문자형이더라고요
>
> 1.1.1.1
> 1.1.2.1
> 1.1.3.1
> 1.1.10.1
> 1.1.12.1
>
> 뭐 이런 식으로 있는걸 정렬을 하면
>
> 1.1.1.1
> 1.1.10.1
> 1.1.12.1
> 1.1.2.1
> 1.1.3.1
>
> 이런식으로 나와버려요
>
> 문자형이라서 그런가봐요
>
> 기존에 만들어진걸 고치는 거라
>
> 제맘데로 DB를 쪼개서 숫자형으로 바꿀 수도 없고
>
> 알려주세요
>
> 부탁드려용
비교 연산을 문자로 하게되서 나타나는 문제입니다
"12" < "2" 을 결과가 나요죠...
먼저 문자열내의 "." 문자를 제거한 후 숫자로 바꾸어서 비교연산을
하면 정확한 비교가 되겠지요
그리고 BDGrid는 단순히 dataset의 조회용이므로 DBGrid에서
sort한다는 개념이 아니라 dataset(TQuery, TTable..) 에서의 sort 이겠지요
TQuery의 SQL문장에서 SELECT 시 문자열을 replace하여 숫자로
비교하려면 어떤 DBMS를 사용하는냐에 따라 사용하는 함수가 달라지는데
ORACLE의 경우는 REPLACE(string, if, then)와 TO_NUMBER 를 사용합니다
예입니다
SELECT TO_NUMBER(REPLACE('1.1.12.1', '.', ''))
FROM dual