[ORACLE] STUDY_2DAY(LIKE, ESCAPE, CONCAT, TRIM, SUBSTR, REPLACE)



LIKE

SELECT prod_id 상품코드, prod_name 상품명 
  FROM prod
 WHERE prod_name LIKE '삼%'; -- 삼으로 시작하는 모든걸 찾아라
 
SELECT prod_id 상품코드, prod_name 상품명
  FROM prod
 WHERE prod_name LIKE '_성%'; -- 두번째가 성으로 시작하는 모든걸 찾아라
 
SELECT prod_id 상품코드, prod_name 상품명
  FROM prod
 WHERE prod_name LIKE '%치'; -- 마지막이 치로 끝나는 모든걸 찾아라



ESCAPE

SELECT lprod_gu 분류코드, lprod_nm 분류명
  FROM lprod
 WHERE lprod_nm LIKE '%홍\%' ESCAPE '\'; -- 홍%로 끝나는 값을 찾아라
 



CONCAT / ||
 
 SELECT 'a' || 'bcde'
   FROM dual;
 
 SELECT mem_id || 'name is' || mem_name
   FROM member;
 



LTRIM, RTRIM, TRIM
 
 SELECT '<' || TRIM('  AAA  ')||'>' TRIM1,
        '<'|| TRIM(LEADING 'a' FROM 'aaAaBaAaa') || '>' TRIM2,
        '<'|| TRIM('a'FROM 'aaAaBaAaa') || '>' TRIM3
   FROM dual;
 


 

SUBSTR 

 

형식 : SUBSTR (c,m,[n])

- 문자열의 일부분을 선택
- c문자열의 m위치부터 길이 n만큼의 문자 리턴
- m이 0 또는 1이면 첫 글자를 의미
- m이 음수이면 뒤쪽에서부터 처리


SELECT mem_id, SUBSTR(mem_name, 1, 1)성씨
  FROM member;


상품테이블의 상품명의 4째자리부터 2글자가 '칼라'인 상품의 상품코드, 상품명을 검색하시오
(Alias 명은 상품코드, 상품명)
SELECT prod_id 상품코드, prod_name 상품명
  FROM prod
 WHERE SUBSTR(prod_name,4,2) = '칼라';

 




REPLACE

거래처 테이블의 거래처명 중 '삼'->'육'으로 치환
SELECT buyer_name, REPLACE(buyer_name, '삼', '육') "삼->육"
  FROM buyer;

회원테이블의 회원성명 중 '이'씨 성을 -> '리'씨 성으로 치환 검색
SELECT REPLACE(SUBSTR(mem_name,1,1), '이','리') ||
               SUBSTR(mem_name, 2, 2)
  FROM member;
  
문제


상품분류 중에 '전자'가 포함된 상품을 구매한 회원 조회하기
회원아이디, 회원 이름 조회하기
단, 상품명에 삼성전자가 포함된 상품을 구매한 회원
     그리고, 회원의 취미가 수영인 회원

SELECT mem_id, mem_name
  FROM member
 WHERE mem_like = '수영' 
   AND mem_id in (select cart_member
                   from cart
                   where cart_prod in (select prod_id
                                         from prod
                                        where prod_name LIKE '%삼성전자%'
                                          and prod_lgu in (select lprod_gu
                                                            from lprod
                                                            where lprod_nm Like '%전자%')));