[Oracle] 문자열 length, instr, replace 사용하기

문자열의 길이 출력하기 (LENGTH)

문자열 길이를 출력하는 방법

-- 이름을 출력하고 그 옆에 이름의 철자 개수를 출력하기
SELECT [컬럼명...], LENGTH(컬럼명)
	FROM [테이블명]

-- 한글 길이 출력
SELECT LENGTH('가나다라') -- 결과 4
	FROM DUAL;

-- BYTE 단위로 출력
SELECT LENGTHB('가나다라') -- 결과 12
	FROM DUAL;
  • LENGTH 함수는 문자열의 길이를 출력하는 함수다. LENGTH(컬럼명)는 컬럼에 해당하는 데이터의 철자의 개수가 출력된다. ( 한글도 문자의 길이가 출력된다. )
  • 한글은 1글자당 3BYTE가 들어간다.

문자열에서 특정 철자 위치 출력하기 (INSTR)

문자에서 특정 철자의 위치를 출력하는 방법

-- 특정 컬럼에서 특정 철자의 위치 찾기
SELECT INSTR(특정값, 찾을위치) -- 결과 2
	FROM DUAL;

-- 특정 컬럼에서 특정값 위치를 통해 특정값 추출하기 
-- 해당 값의 다음 자리부터 추출해야하니 +1 해준다.
SELECT SUBSTR(특정값, INSTR(특정값, 찾을값)+1)
	FROM DUAL;

-- 특정 위치의 특정 값 추출하고 특정 값을 자르고 출력하기
SELECT RTRIM(SUBSTR(특정값, INSTR(특정값, 찾을값)+1), 자를값)
	FROM DUAL;

예시..

abcdef@naver.com
12345678910111213141516
  1. 특정 컬럼 특정 철자 위치 : 7
  2. 특정 컬럼에서 특정값 위치를 통해 특정값 추출하기 결과 : naver.com
  3. 특정 위치의 특정값 추출하고 특정값을 자르고 출력하기 결과 : naver

특정 철자를 다른 철자로 변경하기 (REPLACE)

문자에서 특정 철자를 다른 철자로 변경하는 방법

-- 특정 컬럼의 데이터를 출력할때, 특정 값을 특정 값으로 변경해 출력하기
SELECT [컬럼명...], REPLACE(컬럼명, 찾을값, 변경할값)
	FROM [테이블명]

-- 특정 컬럼의 데이터를 출력할때, 특정 값의 범위를 특정 값으로 변경해 출력하기
SELECT [컬럼명...], REGEXP_REPLACE(컬럼명, 정규표현식, 변경할값)
	FROM [테이블명]

-- 특정 값의 위치에 해당하는 값을 특정 값으로 변경 출력하기
SELECT REPLACE(컬럼명, SUBSTR(컬럼명,찾을값의 위치(자리수), 몇자리), 변경할 값)
	FROM [테이블명]
  • REPLACE 함수는 특정 철자를 다른 철자로 변경하는 문자 함수다.
  • REGEXP_REPLACE는 정규표현식이다. 정규식 함수는 일반함수보다 더 복잡한 형태의 검색패턴으로 데이터를 조회할 수 있게 해주는 함수다.
LIST