데이터 베이스/Oracle SQL

[oracle sql] 문자열 내장 함수 (1)

Gh1324 2021. 10. 23. 05:13
728x90

1. SUBSTR(문자열, 시작위치, 길이) : 문자열 잘라내는 함수

 

SELECT SUBSTR('HELLO',1,3) FROM DUAL;

-> HELLO의 1번째 위치부터 3글자

SELECT SUBSTR('HELLO',3) FROM DUAL;

-> HELLO의 3번째 위치부터 다

SELECT SUBSTRB('HELLO',3) FROM DUAL;

-> 바이트단위, HELLO의 3번째 바이트부터 다(영문이라 1바이트 단위)

SELECT SUBSTRB('안녕',3) FROM DUAL;

ex) 모든 학생의 이름과 출생 월만을 조회하시오.

select name, substr(birthday,6,2) month from student;

 

ex) 회원 중에서 전화번호가 011으로 시작하는 회원의 모든 정보를 출력하시오.

select * from member where substr(phone,1,3)='011'; 또는

select * from member where phone like '011%';

 

ex)회원 중에서 생년 월이 7,8,9월인 회원의 모든 정보를 출력하시오.

select * from member where substr(birthday,6,2) [not] in ('07','08','09');

 

ex) 전화번호를 등록하지 않은 회원 중에서 생년 월이 7,8,9월인 회원의 모든 정보를 출력하시오.

select * from member where phone is null and substr(birthday,6,2) [not] in ('07','08','09');

 

2. CONCAT('a','b') : 문자열 덧셈 함수 

 

-> 'ab'

= select 3||'4' from dual

= select 3 + '4' from dual : 함수를 쓰지 않는 것을 권장(속도차이).

 

3. 문자열 TRIM 함수 

 

select LTRIM('  hello  ') from dual;

select RTRIM('  hello  ') from dual;

select TRIM('  hello  ') from dual;

4. 문자열 소문자 또는 대문자로 변경하기

select lower('neWlEc') from dual;

select upper('neWlEc') from dual;

ex) 회원의 아이디가 'newlec'인 회원을 조회하시오. (단, 대/소문자를 가리지 않음)

select * from member where lower(id) = 'newlec';

 

5. REPLACE(문자열, 찾는 문자열, 대치할 문자열)/ TRANSLATE()

select replace('where we are', 'we', 'you') from dual;

-> 문자열을 찾아 문자열로 대치해준다.

select translate('where we are', 'we', 'you') from dual;

-> 문자 하나씩 대치, w->y, e->o; 길이가 맞아야 하지만 길다고 오류가 나진 않음.

ex) 회원의 이름과 주소를 조회하시오.(단, 주소는 빈칸 없이 출력하시오.)

select name, replace(adress, ' ','') from member; 

728x90

'데이터 베이스 > Oracle SQL' 카테고리의 다른 글

[oracle sql] 문자열 내장 함수 (2)  (0) 2021.10.26
SQL DEVELOPER 경고 오류 실행 안됨  (3) 2021.10.24
rownum 실습  (0) 2021.10.23
정규식 참고 사이트  (0) 2021.10.23
sql 실습 (1)  (0) 2021.10.22