2012. 3. 11. 14:55
기술문서창고/mysql
이런 저런 자료를 작업하다보면 한자리 숫자 앞에 '0'을 붙여야 하는 경우가 종종 있다.
예를 들면 학번을 만들 때인데, 학년, 반, 번호 데이터를 가져다가 연달아 붙이는 경우를 들 수 있다.
예를 들어 3학년 1반 1번인 경우.. 3101 로 만들어야 할 때가 바로 그 때이다.
물론 아무생각없이 손으로 하나하나 입력해도 되겠지만..
사람 수가 좀 된다면 참으로 지루하지 않을 수 없다.
따라서 조금 구글링 등을 통해서 찾아봤다.
엑셀
엑셀의 경우는 참 단순히 해결된다.
text라는 함수를 쓰면 참 허무하게 해결된다. 예를 들어 학년, 반, 번호가 각각 a1, b1, c1 셀에 있다고 할 때
처럼 하면 해결된다. 즉 text가 일종의 양식을 지정하는 것이다.
이처럼 유용한 text함수는 text(c1, "00번") 처럼도 사용할 수 있어 매우 유용하니 잘 알아두자. ^^
MySQL
MySQL의 경우는 쪼~금 복잡한데
나의 경우는 관련 포맷팅 함수를 찾아보다 좀 단순무식하게 하는 방법을 찾아냇다.
class_grade를 학년, class_num을 반, student_num을 번호라고 한다면, 다음과 같다.
cast를 쓴 이유는 blob으로 결과가 리턴되어 결과를 볼 수 없어서 char형(문자열)로 바꿔주기 위함이다. 이런 부분에서는 엑셀의 text 함수가 매우 부러웠다.
예를 들면 학번을 만들 때인데, 학년, 반, 번호 데이터를 가져다가 연달아 붙이는 경우를 들 수 있다.
예를 들어 3학년 1반 1번인 경우.. 3101 로 만들어야 할 때가 바로 그 때이다.
물론 아무생각없이 손으로 하나하나 입력해도 되겠지만..
사람 수가 좀 된다면 참으로 지루하지 않을 수 없다.
따라서 조금 구글링 등을 통해서 찾아봤다.
엑셀
엑셀의 경우는 참 단순히 해결된다.
text라는 함수를 쓰면 참 허무하게 해결된다. 예를 들어 학년, 반, 번호가 각각 a1, b1, c1 셀에 있다고 할 때
=concatenate( a1, b1, text(c1, "00" ) )
처럼 하면 해결된다. 즉 text가 일종의 양식을 지정하는 것이다.
이처럼 유용한 text함수는 text(c1, "00번") 처럼도 사용할 수 있어 매우 유용하니 잘 알아두자. ^^
MySQL
MySQL의 경우는 쪼~금 복잡한데
나의 경우는 관련 포맷팅 함수를 찾아보다 좀 단순무식하게 하는 방법을 찾아냇다.
class_grade를 학년, class_num을 반, student_num을 번호라고 한다면, 다음과 같다.
cast( if( student_num < 10, concat(class_grade, class_num, '0', student_num), concat(class_grade, class_num, student_num)) as char)
cast를 쓴 이유는 blob으로 결과가 리턴되어 결과를 볼 수 없어서 char형(문자열)로 바꿔주기 위함이다. 이런 부분에서는 엑셀의 text 함수가 매우 부러웠다.