CS/데이터베이스

SQL - SELECT : LIKE, NULL 대체

JWonK 2023. 2. 20. 16:51
728x90
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/131112

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

▶ LIKE를 이용한 검색


검색 조건을 부분적으로만 알고 있다면 LIKE 키워드를 이용해 검색할 수 있다. 검색 조건을 정확히 알면 = 연산자로 조건을 표현하면 되지만 부분적으로만 알고 있다면 = 대신 LIKE 키워드를 사용한다.

 

단, LIKE 키워드는 문자열을 이용하는 조건에만 사용할 수 있다.

 

LIKE 키워드와 함께 사용할 수 있는 대표 기호는 아래와 같다.

 

기호 설명
% 0개 이상의 문자 (문자의 내용과 개수는 상관 없음)
_ 1개의 문자 (문자의 내용은 상관 없음)

 

 

LIKE 키워드와 함께 사용할 수 있는 예는 아래와 같다.

사용 예 설명
LIKE '데이터%' 데이터로 시작하는 문자열(데이터로 시작하기만 하면 길이 상관무)
LIKE '%데이터' 데이터로 끝나는 문자열(데이터로 끝나기만 하면 길이 상관무)
LIKE '%데이터%' 데이터가 포함된 문자열
LIKE '데이터___' 데이터로 시작하는 6자 길이의 문자열
LIKE '__한%' 세 번째 글자가 '한'인 문자열

 

 

 

 

 

 

 

 

[프로그래머스 문제 설명]


다음은 식품공장의 정보를 담은 FOOD_FACTORY 테이블입니다. FOOD_FACTORY 테이블은 다음과 같으며 FACTORY_ID, FACTORY_NAME, ADDRESS, TLNO는 각각 공장 ID, 공장 이름, 주소, 전화번호를 의미합니다.

 

Column nameTypeNullable
FACTORY_ID VARCHAR(10) FALSE
FACTORY_NAME VARCHAR(50) FALSE
ADDRESS VARCHAR(100) FALSE
TLNO VARCHAR(20) TRUE

문제

FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요.


 

 

SELECT FACTORY_ID, FACTORY_NAME, ADDRESS
FROM FOOD_FACTORY
WHERE ADDRESS LIKE '강원도%'
ORDER BY FACTORY_ID ASC;

 

 

 

 

 

 

 

▶ NULL 값 대체


[ORACLE] NVL 함수 

: 널처리 함수. data 값이 null 값일때 임의설정값으로 처리해주기

NVL("값","지정값")

값이 null 인 경우, 지정 값을 출력하고 그렇지 않으면 원래값을 그대로 출력한다.

 

 

 

SQL별 null 처리함수

DB 언어 처리함수
ORACLE NVL(expr1, expr2)
MSSQL ISNULL(expr1, expr2)
MYSQL IFNULL(expr1,expr2)
MYSQL COALESCE(expr1,expr2,...expr)

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/132201

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

문제 설명

다음은 종합병원에 등록된 환자정보를 담은 PATIENT 테이블입니다. PATIENT 테이블은 다음과 같으며 PT_NO, PT_NAME, GEND_CD, AGE, TLNO는 각각 환자번호, 환자이름, 성별코드, 나이, 전화번호를 의미합니다.

Column nameTypeNullable
PT_NO VARCHAR(10) FALSE
PT_NAME VARCHAR(20) FALSE
GEND_CD VARCHAR(1) FALSE
AGE INTEGER FALSE
TLNO VARCHAR(50) TRUE

문제

PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.

 

 

 

SELECT PT_NAME, PT_NO, GEND_CD, AGE, NVL(TLNO, 'NONE') as TLNO
FROM PATIENT 
WHERE AGE <= 12 and GEND_CD = 'W'
ORDER BY AGE DESC, PT_NAME ASC;
728x90
반응형