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;
그럼 이제 잘 정렬된 결과값을 얻어낼 수 있을것임! 😎
'기타 > 🚨 에러' 카테고리의 다른 글
[에러 잡자] 깃허브 # Git_LF will be replaced by CRLF in ~ (0) | 2021.06.15 |
---|---|
[에러 잡자] 티스토리 # 엔터를 누르면 원하지 않는 간격이 생길 때 (0) | 2021.06.12 |
[에러 잡자] Django # can't open file 'manage.py': [Errno 2] No such file or (0) | 2021.03.21 |
[에러 잡자] 파이참 # This code is unreachable (0) | 2021.02.19 |
[에러 잡자] 티스토리 # New 회색 아이콘 주황색으로 복구하기 (2) | 2021.02.18 |