1. 조건식
1) LIKE 연산자
- 패턴을 비교할 때 사용하는 연산자
- 대치 문자열(와일드카드) '%', '_'이 사용
- '%'는 해당 문자열이 사용된 위치 이후에 존재하는 모든 문자열과 대응됨 ex) '김%' ->'김'으로 시작하는 모든 문자열과 대응 '%김' ->'김'으로 끝나는 모든 문자열과 대응
- '_'는 해당문자열이 사용된 위치에 하나의 문자와 대응됨 ex) '김_열' ->'김'으로 시작하고 3글자로 구성되며 끝자리에는 '열'이 와야 대응됨 '_김' ->2글자로 구성되어 있으며 '김'으로 끝나는 문자열과 대응
- 문자열 비교에만 사용 할 것
- 너무 많이사용 하지 말 것
( 사용형식 )
컬럼명 LIKE '패턴문자열'
예제) 회원테이블에서 주소지가 '대전'인 회원정보를 조회하시오
( Alias는 회원번호, 회원명, 주소, 집전화번호 )
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_ADD1||' '||MEM_ADD2 AS 주소, -- 문자열의 결합 ||으로한다. 사이에 한칸집에 넣겟다
MEM_HOMETEL AS 집전화번호
FROM MEMBER
WHERE MEM_ADD1 LIKE '대전%'
예제) 매출자료(CART)에서 2005년 6월 매출정보를 조회하시오
( Alias는 날짜, 제품 코드, 판매수량이다. )
SELECT TO_CHAR(TO_DATE(SUBSTR(CART_NO,1,8)),'YYYY"년" MM"월"DD"일"') AS 날짜,
-- TO_DATE(SUBSTR(CART_NO,1,8)) AS 날짜, /로 구분되어서 나온다
CART_PROD AS 제품코드,
CART_QTY AS 판매수량
FROM CART
WHERE CART_NO LIKE '200506%';
문제) 매입테이블(BUYPROD)에서 2005년 3-5월 매입정보를 조회하시오
⇒ 날짜를 할때에는 LIKE 연산자 쓰지 말 것 ( Alias는 일자, 제품 코드, 매입수량, 매입단가, 매입금액이다. )
SELECT BUY_DATE AS 일자,
BUY_PROD AS 제품코드,
BUY_QTY AS 매입수량,
BUY_COST AS 매입단가,
BUY_QTY * BUY_COST AS 매입금액
FROM BUYPROD
WHERE BUY_DATE >= '20050301' AND BUY_DATE <= '20050531';
-- 문자열이 날짜열로 바뀌었다
-- 데이터다 NLS에서 지정한 날짜의 형태포맷을 전체 같추어야 저절로 바뀐다.
-- 날짜 타입은 LIKE 사용하지않고 날짜 타입이나 이와같은 형식으로 비교해준다.
-- BUY_DATE >= TO_DATE('20050301') AND BUY_DATE <= TO_DATE('20050531');
(BETWEEN 연산자 사용)
SELECT BUY_DATE AS 일자,
BUY_PROD AS 제품코드,
BUY_QTY AS 매입수량,
BUY_COST AS 매입단가,
BUY_QTY * BUY_COST AS 매입금액
FROM BUYPROD
WHERE BUY_DATE BETWEEN '20050301' AND '20050531';
문제) 매입테이블(BUYPROD)에서 2005년 4월 매입정보를 조회하시오
( Alias는 일자, 제품 코드, 매입수량, 매입단가, 매입금액이다. )
SELECT BUY_DATE AS 일자,
BUY_PROD AS 제품코드,
BUY_QTY AS 매입수량,
BUY_COST AS 매입단가,
BUY_QTY * BUY_COST AS 매입금액
FROM BUYPROD
WHERE TO_CHAR(BUY_DATE) LIKE '2005_04%';
-- /가 없으면 데이터가 안나온다
-- 데이터베이스의 NLS의 날짜 형식을 바꿔주면 또 안나온다.
-- 안쓰는게 좋음 사이에 _로 해주면 가능
SELECT TO_CHAR(BUY_DATE) FROM BUYPROD;
2) BETWEEN 연산자
- 지정된 범위 값을 표현할 때 사용
- AND 연산자를 대신할 수 있음
( 사용형식 )
컬럼명 BETWEEN 값1 AND 값2; --%와일드카드 사용못함
예제) 회원테이블에서 40대 여성회원정보를 조회하시오
( Alias는 회원번호, 회원명, 주민번호, 나이, 마일리지 )
( 단, 주민번호의 출력 형식은 xxxxxx-xxxxxxx 이다. )
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_REGNO1||'-'||MEM_REGNO2 AS 주민번호,
EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM MEM_BIR) AS 나이, -- EXTRACT("YEAR,NONTH,DAY 등등" FROM SYSDATE)
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM MEM_BIR) BETWEEN 40 AND 49
AND (SUBSTR(MEM_REGNO2,1,1)='2' OR SUBSTR(MEM_REGNO2,1,1)='4') ; -- NOR AND OR 순이라 괄호 해줘야한다.
1. like
0.00MB
'데이터베이스 > ORACLE' 카테고리의 다른 글
14. 숫자형 함수 ( MATH_FUNCTION ) (0) | 2021.03.16 |
---|---|
13. 함수 ( FUNCTION ) (0) | 2021.03.16 |
11. 표현식 ( CASE WHEN THEN ) / 조건식 ( IN, EXISTS ) (0) | 2021.03.16 |
10. 연산자 ( OPERATION ) (0) | 2021.03.16 |
9. SELECT (0) | 2021.03.15 |