CodingSpace

[프로그래머스/SQL] 이름에 el이 들어가는 동물 찾기 (feat. LIKE) 본문

프로그래머스/SQL 고득점 Kit

[프로그래머스/SQL] 이름에 el이 들어가는 동물 찾기 (feat. LIKE)

개발자_조이킴 2022. 3. 18. 20:52

Problem. 이름에 el이 들어가는 동물 찾기


Link.

https://programmers.co.kr/learn/courses/30/lessons/59047

 

코딩테스트 연습 - 이름에 el이 들어가는 동물 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr


Description.

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.

ANIMAL_INS 테이블 구조는 다음과 같습니다.

  • ANIMAL_ID: 동물의 아이디
  • ANIMAL_TYPE: 생물 종
  • DATETIME: 보호 시작일
  • INTAKE_CONDITION: 보호 시작 시 상태
  • NAME: 이름
  • SEX_UPON_INTAKE: 성별 및 중성화 여부

 

ANIMAL_INS 테이블에서 ANIMAL_TYPE이 개(Dog)이고 이름에 'el'이 들어가는 동물을 조회하는 SQL문을 작성해주세요.

※ 결과는 이름(NAME)순으로 정렬합니다.

※ 이름의 대소문자는 구분하지 않는다.


Key Point. 

특정 문자를 포함된 데이터를 추출하고 싶을때 LIKE 명렁어를 사용한다.

이때 문자열의 대소문자를 구별하지 않는다 (예. el, EL, eL, El 모두 같은 문자열로 추출된다).

또한 퍼센트(%)를 사용하여 다양한 조건과 일치하는 문자열들을 추출할 수 있다:

  • 'el%' el로 시작하는 문자열
  • '%el': el로 끝나는 문자열
  • '%el%': 문자열안에 el이 존재하는 문자열

본 문제는 간단하게 LIKE을 사용하여 ANIMAL_INS 테이블에서 동물의 이름에 'el'이 포함되어 있는 동물들을 조회했다.

 

테스트 테이블 (ANIMAL_INS)

 

더보기

<MySQL 쿼리문>

CREATE TABLE ANIMAL_INS
(
  ANIMAL_ID VARCHAR(32) PRIMARY KEY,
  ANIMAL_TYPE VARCHAR(32) NOT NULL,
  DATETIME DATETIME NOT NULL,
  INTAKE_CONDITION VARCHAR(32) NOT NULL,
  NAME VARCHAR(32),
  SEX_UPON_INTAKE VARCHAR(32) NOT NULL
);

INSERT INTO ANIMAL_INS (ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE)
VALUES ('A355753', 'Dog', '2015-09-10 13:14:00', 'Normal', 'Elijah', 'Neutered Male');
INSERT INTO ANIMAL_INS (ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE)
VALUES ('A352872', 'Dog', '2015-07-09 17:51:00', 'Aged', 'Peanutbutter', 'Neutered Male');
INSERT INTO ANIMAL_INS (ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE)
VALUES ('A353259', 'Dog', '2016-05-08 12:57:00', 'Injured', 'Bj', 'Neutered Male');
INSERT INTO ANIMAL_INS (ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE)
VALUES ('A373219', 'Cat', '2014-07-29 11:43:00', 'Normal', 'AElla', 'Spayed Female');
INSERT INTO ANIMAL_INS (ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE)
VALUES ('A382192', 'Dog', '2015-03-13 13:14:00', 'Normal', 'Maxwell 2', 'Intact Male');
INSERT INTO ANIMAL_INS (ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE)
VALUES ('A382112', 'Dog', '2015-01-11 13:14:00', 'Normal', 'abcEL', 'Intact Male');

 

1) 'el%': el로 시작하는 문자열

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE 'el%'

MySQL 쿼리문 결과 ('el%')

 

2) '%el': el로 끝나는 문자열

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%el'

MySQL 쿼리문 결과 ('%el')

 

3) '%el%': 문자열내 el이 존재하는 문자열

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%el%'

MySQL 쿼리문 결과 ('%el%')


My Answer. 

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NAME LIKE '%el%'
AND ANIMAL_TYPE = 'Dog'
ORDER BY NAME

References. 

MySQL 테스트 사이트: http://sqlfiddle.com/#!9/01a971/4

 

SQL Fiddle | A tool for easy online testing and sharing of database problems and their solutions.

Query Panel Use this panel to try to solve the problem with other SQL statements (SELECTs, etc...). Results will be displayed below. Share your queries by copying and pasting the URL that is generated after each run.

sqlfiddle.com

 

Comments