오라클 문자처리함수 (단일함수)

최주영·2023년 4월 3일
0

오라클

목록 보기
4/22

단일함수

  • 테이블의 모든 행에 결과가 반환되는 함수
  • 행별로 하나의 결과를 반환
  • SELECT WHERE ORDER BY 절에서 사용

ex) 문자처리함수, 숫자처리함수 ,날짜처리함수, 형변환함수, 선택함수

그룹 함수

  • 테이블에 한개의 결과가 반환되는 함수
  • 여러 행이 입력되고, 결과는 하나의 행씩 반환
  • GROUP BY HAVING 절에서 사용

ex) SUM, AVG, COUNT, MAX, MIN


문자열 함수

  • SELECT문의 컬럼을 작성하는 부분과 WHERE절 에서 사용
  • INSERT, UPDATE, DELETE문에서 사용 가능

오늘은 문자처리 함수에 대해서 알아보자!


✅ LENGTH

  • 지정된 컬럼이나, 리터럴값에 대한 길이를 출력해주는 함수
  • LENGTH('문자열' 또는 컬럼명) -> 문자열의 개수를 출력
// 이메일이 16글자 이상인 사원을 조회하기
SELECT EMP_NAME, EMAIL, LENGTH(EMAIL) FROM EMPLOYEE WHERE LENGTH(EMAIL) >= 16;

// LENGTHB : 차지하는 (B)YTE를 출력 
// EXPRESS버전에서 한글을 3BYTE로 저장함. ENTERPRISE버전에서는 2BYTE
 SELECT LENGTHB('ABCD'), LENGTHB('월요일') FROM EMPLOYEE; // 월요일은 3BY * 3 = 9BYTE로 나옴

✅ INSTR

  • JAVA의 INDEXOF와 유사한 기능
  • INSTR('문자열' 또는 컬럼, '찾을 문자'[,시작위치, 찾을번째(횟수)])
  • 오라클에서는 인덱스가 1부터 시작함, 문자가 존재하지 않으면 0으로 리턴
SELECT EMP_NAME, EMAIL FROM EMPLOYEE WHERE INSTR(EMAIL,'j')>0;  // EMAIL 주소에 j가 포함되어있는 사원 찾기

SELECT INSTR('GD아카데미 GD게임즈 GD음악사 GD화이팅','GD',3), //3은 시작위치임( 8출력됨)
       INSTR('GD아카데미 GD게임즈 GD음악사 GD화이팅','GD',-1), // -1은 역순방향으로 찾음 (20출력됨)    
       INSTR('GD아카데미 GD게임즈 GD음악사 GD화이팅','GD',1,3) // 1번째에서 시작하는데,3번에 GD있는 값 찾기 (14출력됨)
       
SELECT EMP_NAME,EMAIL,INSTR(EMAIL,'@') FROM EMPLOYEE; // 사원테이블에서 @의 위치를 찾기

✅ LPAD / RPAD

  • 문자열의 길이가 지정한 길이만큼 차지않았을 때 특정 문자로 채워주는 함수
  • LPAD / RPAD(문자열 또는 컬럼, 최대길이, 대체문자)
  • 대체문자에 값을 안적으면 공백삭제로 인식됨
// 한글은 2BYTE씩 계산됨  ex) 유병승(3글자지만 2BYTE씩 계산하므로) 총 6바이트
SELECT LPAD('유병승',10,'*'), //****유병승
       RPAD('유병승',10,'@'), //유병승@@@@
       LPAD('유병승',10) //  //    유병승 
FROM DUAL;

✅ LTRIM/ RTRIM

  • 특정문자를 지정해서 삭제
  • LTRIM/RTRIM('문자열' 또는 컬럼[,'특정문자'])
  • 특정문자에 값을 안적으면 공백 삭제로 인식됨
SELECT '     병승',LTRIM('     병승'),   // 문자열 기준으로 왼쪽 공백값들 다 제거
                  RTRIM('   병승   '),  // 문자열 기준으로 오른쪽 공백값들 다 제거
FROM DUAL;

SELECT '병승2222', RTRIM('병승2222','2'),  // 오른쪽에 2로 시작하는 부분 다 제거
                 RTRIM('병승22122','2'),  // 2아닌 다른 숫자로 막히는 부분까지만 제거 -> 병승221 출력됨
                 RTRIM('병승22122','12')  // '12' -> (1또는 2) 다 삭제 -> 병승 출력 
FROM DUAL;

✅ TRIM

  • 양쪽에 있는 값을 제거하는 함수
  • 특정 문자를 지정해서 삭제
  • 특정 문자를 지정하지 않으면 공백값 삭제로 인식
  • 삭제할 기준은 한글자만 가능
// TRIM('문자열'||컬럼)
// TRIM(LEADING||TRALLING||BOTH '제거할문자' FROM 문자열||컬럼명)

'ZZZZZZ마징가ZZZZZZ', TRIM('Z' FROM 'ZZZZZZ마징가ZZZZZZ'), // 양쪽에 있는 Z 지워줌 -> 마징가
TRIM(LEADING 'Z' FROM 'ZZZZZ마징가ZZZZZZ'),  // 문자열 왼쪽 부분 Z다 삭제 -> 마징가ZZZZZZ
TRIM(TRAILING 'Z' FROM 'ZZZZZ마징가ZZZZZZ'),  // 문자열 오른쪽 부분 Z다 삭제 -> ZZZZZZ마징가
TRIM(BOTH 'Z' FROM 'ZZZZZ마징가ZZZZZZ')  // 문자열 양쪽 부분 Z다 삭제 -> 마징가
FROM EMPLOYEE;  

✅ SUBSTR

  • 문자열을 잘라내는 기능
  • SUBSTR('문자열' 또는 컬럼명, 시작인덱스번호[,길이])
SELECT SUBSTR('SHOWMETHEMONEY',5), // 5번째부터 끝까지 잘라내서 보여줌 (METHEMONEY)출력
      SUBSTR('SHOWMETHEMONEY',5,2), // 5번째부터 잘라서 보여주는데 2글자만 보여줌 (ME) 출력
      SUBSTR('SHOWMETHEMONEY',INSTR('SHOWMETHEMONEY','MONEY')), // 10번째부터 끝까지 출력 (MONEY)
      SUBSTR('SHOWMETHEMONEY',-5,2) // (-)는 역순의 의미로 역순부터 5번째인 M부터 2개 글자 출력 (MO)출력
FROM DUAL;

✅ UPPER, LOWER, INITCAP

SELECT UPPER('welcome TO OrACLE worLd'),  // 모두 대문자로  
       LOWER('welcome TO OrACLE worLd'),  // 모두 소문자로
       INITCAP('welcome TO OrACLE worLd') // 첫글자만 대문자
FROM DUAL;

✅ CONCAT

  • 문자열 결합해주는 함수
  • | | 연산자와 동일함
SELECT EMP_NAME||EMAIL, CONCAT(EMP_NAME, EMAIL) // 이름과 이메일이 합쳐져셔 출력됨
FROM EMPLOYEE;

✅ REPLACE

  • 대상문자(컬럼)에서 지정문자를 찾아서 특정문자로 변경
  • REPLACE('문자열' 또는 컬럼명,'찾을문자','대체문자')
SELECT EMAIL, REPLACE(EMAIL,'BS','GD')  -- 이메일의 BS문자를 GD로 바꿔줌
FROM EMPLOYEE;

✅ TRANSLATE

  • 매칭되는 문자로 변경해주는 함수
// -- 두번째와 세번째 인자가 매칭기준이며 첫번째 인자는 변경대상이다
SELECT TRANSLATE('010-3644-6259','0123456789','영일이삼사오육칠팔구') 
FROM DUAL;  // 영일영-삼육사사-육이오구
profile
우측 상단 햇님모양 클릭하셔서 무조건 야간모드로 봐주세요!!

0개의 댓글