SELECT first_name,
upper(first_name),
lower(first_name)
FROM employees;
SELECT
'abc',
initcap('abc'),
initcap('aBc')
FROM dual;
-- 이름(first name)에 'an' 포함된 직원 조회 (단, 대소문자 구분없이)
SELECT
first_name
FROM employees
WHERE lower(first_name) LIKE '%an%';
2. 문자열 추출 함수
substr()
자바의 substring()과 유사하다.
varchar2 substr(컬럼, 시작위치, 가져올 문자 개수)
varchar2 substr(컬럼, 시작위치)
SELECT
name,
ssn AS 주민등록번호,
substr(ssn, 1, 2) AS 생년,
substr(ssn, 3, 2) AS 생월,
substr(ssn, 5, 2) AS 생일,
substr(ssn, 8, 1) AS 성별
FROM tblinsa;
3. 문자열 길이
length()
number length(컬럼)
-- 컬럼 리스트에서 사용
SELECT name, length(name) FROM tblcountry;
-- 조건절에서 사용
SELECT name, length(name) FROM tblcountry WHERE LENGTH(name) > 3;
-- 정렬에서 사용
SELECT name, length(name) FROM tblcountry ORDER BY LENGTH(name) desc;
4. 문자열 검색(indexOf)
instr()
검색어의 위치 반환
number instr(컬럼, 검색어)
number instr(컬럼, 검색어, 시작위치)
number instr(컬럼, 검색어, 시작위치, -1) //lastIndexOf
못찾으면 0을 반환
SELECT
'안녕하세요. 홍길동님.',
instr('안녕하세요. 홍길동님.', '홍길동') AS r1,
instr('안녕하세요. 홍길동님.', '아무개') AS r2,
instr('안녕하세요. 홍길동님. 홍길동님', '홍길동') AS r3, -- 첫번째만 찾는다
instr('안녕하세요. 홍길동님. 홍길동님', '홍길동', 9) AS r4,
instr('안녕하세요. 홍길동님. 홍길동님', '홍길동', instr('안녕하세요. 홍길동님. 홍길동님', '홍길동')+LENGTH('홍길동')) AS r5, -- 비권장, 자바나 plsql의 도움을 받아 작성해야한다.
instr('안녕하세요. 홍길동님. 홍길동님', '홍길동', -1) AS r6
FROM dual;