728x90
test_db 데이터베이스 안에 test라는 테이블이 있다고 하자..
데이터는 아래와 같다.
orderbyTest(칼럼명) |
0 |
20 |
14 |
4 |
5 |
91 |
test@test.com |
아무생각 없이 그냥 order by 절로 정렬을 하려고 했으나...? 원하는 대로 나오질 않는다.
SELECT * FROM test_db.test ORDER by orderbyTest;
# 0
# 14
# 20
# 4
# 5
# 91
# test@test.com
뒤에 * 1로 orderby 를 했더니 숫자들은 정렬이 되었지만 제일 아래에 있던 문자형태의 값이 중간으로 나와버린다.
SELECT * FROM test_db.test ORDER by orderbyTest * 1;
# 0
# test@test.com
# 4
# 5
# 14
# 20
# 91
그러다가 mysql 문법중에 LPAD, RPAD라는게 있다는걸 발견하였다.
* LPAD : 왼쪽에 자신이 지정한 특정 문자를 원하는 자리수만큼 넣어준다.
* RPAD: 오른쪽에 자신이 지정한 특정 문자를 원하는 자리수만큼 넣어준다.
* 사용 방법 : (원본 문자, 원하는 자리수, 채울 문자열)
SELECT LPAD('TEST',10,'0') FROM test;
# 0000000TEST
SELECT RPAD('TEST',10,'0') FROM test;
# TEST000000
이걸 응용하여 order by할때 LPAD로 0의 숫자를 채워넣어 정렬이 되도록 수정하였더니 원하는 결과대로 잘나온다.
SELECT * FROM test_db.test ORDER BY LPAD(orderbyTest, 10, '0');
# 0
# 4
# 5
# 14
# 20
# 91
# test@test.com
728x90
'Programming > DB' 카테고리의 다른 글
Mysql Drop multiple database 방법 (0) | 2019.12.16 |
---|
댓글