기타/🚨 에러

[에러 잡자] SQLite # _order by 정렬 순서대로 안나올 때

둥굴둥굴둥굴레차 2021. 4. 3. 16:47

 

users_user 테이블의 balance속성 중 가장 적은 5개의 balance값을 가져오려고 했다.

select balance from users_user order by balance limit 5;

 

그러나 나온 결과값은....

1000000
150
16000
160000
18000

 

자세히 살펴보면 가장 작은 자릿수(150)을 기준으로 잘려서 앞 3자리 숫자로만 비교되어 결과값이 출력되었다.

결과값들의 앞 3자리끼리만 비교해보면 오름차순으로 잘 정렬되어 나온 것임을 알 수 있다.

 

하지만 전 이걸 원한게 아닌데여 ^^

 

users_user의 스키마를 아래의 명령어를 통해 살펴보면,

.schema users_user

 

스키마는 다음과 같다.

CREATE TABLE IF NOT EXISTS "users_user"(
  "id" TEXT,
  "first_name" TEXT,
  "last_name" TEXT,
  "age" TEXT,
  "country" TEXT,
  "phone" TEXT,
  "balance" TEXT
);

 

 

balance는 TEXT형으로 지정되어있는데

이렇게 TEXT형이지만 값이 INT형으로 들어간 값들은 order by가 가끔 잘 안먹힐 수 있다.

 

그럴땐 아래와 같이 조회시에만 잠시 형변환(casting)을 해주자!

 

select balance from users_user order by cast(balance as integer)desc limit 5;

 

 

그럼 이제 잘 정렬된 결과값을 얻어낼 수 있을것임! 😎