SQL/SQLD학습

RTRIM, LTRIM의 부가 기능

haema_ 2024. 2. 1. 11:38
728x90

기본적으로 RTRIM, LTRIM 등은 공백을 제거하는 용도로 사용한다.

 

추가로 ORACLE에서는 조금 더 확장된 사용법이 있다.

 

RTRIM(문자열) : 기본 기능. 오른쪽 공백 제거

RTRIM(문자열, '특정 문자') : 오른쪽에서 한 글자씩 비교하며 특정 문자일 경우 제거, 아닐 경우 멈춤.

 

LTRIM도 동일하지만 왼쪽에서 진행하게 된다.

여기서 주의할 점은 '한 글자씩 비교' 한다는 점이다.

 

신기해서 직접 테스트해본 결과를 사진으로 정리하겠다.

 

먼저 COL1에  '  cececece' 라는 값을 테스트하기 위해 넣어주었다. 앞에 공백 2칸이 존재한다.

 

 

 

여기에 단순히 LTRIM(대상, 조건)을 걸면, 아무일도 일어나지 않는다.

왜냐면 첫 번째 칸이 ' '(공백)이기 때문이다.

LTRIM(문자열) 일 경우 왼쪽 공백을 제거해주지만,

LTRIM(문자열, 조건문자) 의 경우 공백 제거 기능이 아닌 조건 문자열에 대한 TRIM만 처리한다는 것을 확인할 수 있다.

 

만약 공백을 제거한 후 조건을 걸고 싶다면, 이렇게 LTRIM 안의 대상 문자열에 LTRIM 기본사용식을 넣어서 처리할 수 있을 것이다.

이 부분에서 ce가 반복되는 경우, 반복되는 만큼 사라져서 결국 NULL을 반환하는 것도 확인할 수 있었다.

 

 

또 한가지 유의할 점은 처음에 말했던 '한 글자씩 비교' 이다.

이번엔 첫번째 c와 e중간에 a를 넣은 새로운 row로 실험을 진행해보았다.

 

마지막 row를 보면 aececece으로, 맨 앞의 c 하나만 지워진 것을 확인할 수 있다.

 

결국 조건인 'ce'를 통째로 비교해서 ce일 경우에 날리는 것이 아니라

'ce'조건일 경우 첫 글자가 c일 경우 c를 지우고, 다음이 e일 경우 e를 지우는 식으로

조건문 내 한 글자 단위로 조건을 만족하지 않을 때까지 반복된다는 것이다.

 

문제로 내기 딱 좋은 작동 방식인 것 같아 한 번 정리해보았다.

반응형

'SQL > SQLD학습' 카테고리의 다른 글

Count(*)  (0) 2024.02.05
GROUP BY 없이 HAVING 사용하기  (0) 2024.02.02
ADD_MONTHS의 edge case  (0) 2024.02.01
FLOOR와 TRUNC 의 차이  (1) 2024.02.01
엔티티와 속성  (0) 2024.01.25