본문 바로가기

배우기/복습노트[oracle sql]

[실습문제] 2023. 10. 27.(금) 문제 풀이(5문제)

728x90
반응형

실습문제 1. STUDENT 테이블에서 각 학생의 이름, 전화번호를 출력.

단 전화번호는 다음과 같은 형태로 출력

055)381-2158 => 0553812158

나는 첫 줄의 방법대로 풀었는데 replace를 두 번 썼더니 조금 헷갈린 부분이 있었다.

선생님은 두 번째 해설을 추가해주셨는데 이 방법이 더 깔끔해보였다.

translate는 치환하려는 값이 없으면 그 대상을 삭제해버리기때문이다.

Oracle에서만 쓸 수 있는 방법일듯.

 

 

실습문제 2. 아래 문장을 실행한 후(기존 데이터에 특문 삽입), professor 테이블에서 각 교수의 이름, 급여, ID를 출력
단, ID에 있는 특수기호는 모두 삭제한 후 리턴
update professor set id = 'captain!!' where PROFNO = 1001;
update professor set id = 'go_go_go' where PROFNO = 4002;
update professor set id = 'simson?' where PROFNO = 4001;
commit;

 

어떤 특수기호가 들어가있는지 안다면 1번처럼 replace를 사용할 수 있겠으나 

특수기호가 어떤 것이 있는지 모른다면 translate를 쓰는 것이 좋겠다.

그러나 추후 정규식 표현을 배울 때 또 다른 좋은 방법이 있다고 하시니 그건 그 때 배우는 걸로.

 

 

실습문제 3. student 테이블에서 각 학생의 이름, 전화번호를 출력
단, 전화번호는 다음과 같은 형태로 출력
055)381-2158 => 055)XXX-2158
055)3811-2158 => 055)XXXX-2158
02)3811-2158 => 02)XXXX-2158

개인적으로 많이 헷갈리면서 어려웠던 문제다.

다른 언어를 생각해보면 자꾸 머리속으로 loop문을 사용하고 싶다는 생각이 들었는데 replce와 lpad를 이용하면 해결할 수 있는 문제였다.

국번1은 내가 해결해본 방법이고 국번2는 선생님이 하신 방법이다.

 

 

실습문제 4. STUDENT 테이블에서 ㅅ성을 가진 학생의 이름, 출생연도, 학년 출력하라.

이 문제는 집에 가는 버스 안에서, 샤워하면서, 자기 전에 계속 고민해본 문제였다.

선생님이 이 문제는 몇 줄이면 해결되는 것이라고 하셨기 때문에 오기가 생겼던 것 같다.

문자에서도 순서가 존재한다는 생각을 못했기 때문에 접근하지 못한 문제였다.

 

 

실습문제 5.(HR계정) EMPLOYEES 테이블에서 EMAIL에 LAST_NAME이 포함되어 있는 직원의 EMPLOYEE_ID, LAST_NAME, EMAIL 출력(대소 구분X)   (총 85건)
--OConnell DOCONNEL (X)
--Grant DGRANT (O)
--Whalen JWHALEN (O)
--De Haan LDEHAAN (X)

지난주 금요일 실습문제 풀이 끝.

 

 

 

 

728x90
반응형