Q&A

  • DBGrid에서 정렬에 관한 문제... 알려주세요
제가요



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를 쪼개서 숫자형으로 바꿀 수도 없고



알려주세요



부탁드려용

1  COMMENTS
  • Profile
    김영대 2000.01.21 19:57
    허진 wrote:

    > 제가요

    >

    > 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