문자열 삽입 함수로 lpad, rpad가 있다.
활용 예시를 보면 아래와 같다.
abcd라는 네 글자의 단어 길이를 10길이로 만들고 그 빈 공간을 *로 채워서 총 10길이로 만들 수 있다.
lpad는 왼쪽, rpad는 오른쪽 공간을 채우게 된다.
잘 쓰지 않는 기능이나, 주로 줄맞추기 할 때 사용된다.
orange에서는 공백과 영문 글자 사이즈가 달라 정렬이 잘 보이지 않으므로 cmd 창에서 실습해보면 아래와 같다.
orange에서는 위와 같이 오른쪽 정렬이 잘 보이지 않고,
이렇게 cmd에서 보면 오른쪽 정렬이 되어있다.
이렇게 왼쪽정렬, 오른쪽 정렬할 때 사용하기도 하나 ★다음 활용 예시가 매우 중요하다.
예를들어
년: 2018
월: 2
일: 1
인 자료가 있다고 하자.
이 자료를 || 를 사용하여 붙이게 되면 201821 이라는 형태의 날짜가 된다.
그러나 우리가 보통 처리하는 날짜는 20180201의 형태이므로 한 자리의 월, 일을 두 자리로 변환할 때 사용하게 된다.
★년||lpad(월, 2, 0)||lpad(일, 2, 0)★ 이 형식은 날짜 배우는 때에 많이 사용하게 될 것이다.
문자열 삭제 함수로는 trim(양 방향에서 제거), ltrim(왼쪽에서 제거), rtrim(오른쪽에서 제거)가 있다.
ltrim(원본대상[, 삭제문자열]),
rtrim(원본대상[, 삭제문자열]),
trim(원본대상)
의 형태로 쓸 수 있으며, ltrim과 rtrim 은 삭제문자열 생략 시 공백을 제거한다.
trim의 경우에는 삭제 문자열을 전달할 수 없으며 양 방향의 공백을 제거한다.
말 그대로 양 방향의 공백만을 제거하기 때문에 중간 공백은 삭제할 수 없으며 이 점이 trim 함수의 단점이다.
위 내용처럼 왼쪽 a를 제거하다가 삭제 대상이 아닌 대상을 만나면 삭제 행위를 중단하므로 가운데 끼어있는 a 는 그대로 남는다.
★공백 제거의 중요성을 잠시 정리해보자.
현업에서 크게 실수하는 부분 중 하나가 공백이 있는 데이터의 처리이다.
관리가 잘 되어있지 않은 데이터는 앞뒤 공백이 있을 수 있다. 'nara5'와 'nara5 '의 데이터는 다르다.
즉, 저장된 문자열에 공백을 포함하는 경우 원하는 데이터 추출이 불가능할 수 있다.
위에 언급한 내용을 테스트해보자.
char(10)은 고정형 데이터 타입 10바이트이므로 따라서 어떤 데이터가 들어가더라도 항상 10바이트를 고정시킨다.
즉 무조건 할당된 컬럼 사이즈만큼 저장하며 그 뒤에 공백을 삽입한다.
varchar는 가변형 데이터 타입이므로 입력된 길이만큼 저장한다.
위와 같이 결과가 trim 함수 하나로 조회가 되지 않거나 조회가 된다.
길이를 살펴보면 아래와 같다.
이렇게 길이가 다른 것을 확인할 수 있다.
눈에 보이는 데이터만을 그대로 믿어서는 안될 일이다.
'배우기 > 복습노트[oracle sql]' 카테고리의 다른 글
[복습] SQL | Oracle 날짜 함수: 날짜 추출 함수(extract, to_char) (0) | 2023.10.28 |
---|---|
[복습] SQL | Oracle 문자 함수: 문자열 치환(삭제) 함수(replace) 그리고 translate (0) | 2023.10.28 |
[복습] SQL | Oracle 문자 함수: 문자열 위치 함수(instr), 문자열 길이 함수(length) (1) | 2023.10.27 |
[복습] SQL | Oracle 문자 함수: 대소치환 함수(upper, lower, initcap), 문자추출 함수(substr) (0) | 2023.10.27 |
[복습] SQL | Oracle 논리연산자와 기타연산자 + 복습 후기(20231026) (0) | 2023.10.26 |