Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL

MySQL의 IF(), NULLIF(), IFNULL() 함수 사용하기

다른 프로그래밍 언어와 마찬가지로 구조화된 쿼리 언어에는 데이터 흐름을 제어하는 ​​조건문이 있습니다. IF 함수는 조건이 충족되면 명령문을 반환하고 충족되지 않으면 다른 유형 명령문(또는 전혀 없음)을 반환합니다. MySQL을 이용한 SQL IF 함수를 살펴보자.

준비

이 SQL Fiddle은 이름, 나이 및 성별이 포함된 샘플 스키마에 연결됩니다. 이것이 이 기사에서 다루는 것입니다. 다음 스키마를 사용하여 고유한 IDE에서 테이블을 생성하십시오.

create table names (
   id INT,
   name VARCHAR(50),
   age INT,
   gender VARCHAR(50)
);
insert into names (id, name, age, gender) values (1, 'Bret Starkings', 55, 'M');
insert into names (id, name, age, gender) values (2, 'Bobbye Eyckel', 76, 'F');
insert into names (id, name, age, gender) values (3, 'Barbie Veschi', 50, 'F');
insert into names (id, name, age, gender) values (4, 'Electra Blazewicz', 47, 'F');
insert into names (id, name, age, gender) values (5, 'Estrella Borleace', 57, 'F');
insert into names (id, name, age, gender) values (6, 'Washington Pittwood', 75, 'M');
insert into names (id, name, age, gender) values (7, 'Phaedra Tertre', 27, 'F');
insert into names (id, name, age, gender) values (8, 'Nicolina Elie', 76, 'F');
insert into names (id, name, age, gender) values (9, 'Hugh Hughson', 86, 'M');
insert into names (id, name, age, gender) values (10, 'Dare Ravilious', 59, 'M');
insert into names (id, name, age, gender) values (11, 'Cad Levins', 13, 'M');
insert into names (id, name, age, gender) values (12, 'Sollie Kimbury', 33, 'M');
insert into names (id, name, age, gender) values (13, 'Elga Rearie', 61, 'F');
insert into names (id, name, age, gender) values (14, 'Cherey Terron', 54, 'F');
insert into names (id, name, age, gender) values (15, 'Abbie Kent', 23, 'F');
insert into names (id, name, age, gender) values (38, 'Nelia Picot', 2, 'F');
insert into names (id, name, age, gender) values (39, 'Benedetto Smithin', 33, 'M');
insert into names (id, name, age, gender) values (40, 'Rickie Maymand', 83, 'F');
insert into names (id, name, age, gender) values (41, 'Kristoforo Dashkov', 6, 'M');
insert into names (id, name, age, gender) values (42, 'Cherice Genty', 6, 'F');
insert into names (id, name, age, gender) values (43, 'Shirley Fake', 95, 'F');
insert into names (id, name, age, gender) values (44, 'Aeriel Plant', 36, 'F');
insert into names (id, name, age, gender) values (45, 'Halimeda Gook', 74, 'F');
insert into names (id, name, age, gender) values (46, 'Minor Harriot', 63, 'M');
insert into names (id, name, age, gender) values (47, 'Greggory Found', 61, 'M');
insert into names (id, name, age, gender) values (48, 'Vivien Braund', 94, 'F');
insert into names (id, name, age, gender) values (49, 'Gaylord Pochet', 96, 'M');
insert into names (id, name, age, gender) values (77, 'Nataline Sealand', 43, 'F')

IF()

IF(expression ,expr_true, expr_false);

MySQL 데이터베이스의 IF 함수 구문은 IF 키워드를 사용한 다음 세 가지 매개변수를 취합니다. 함수가 평가하는 부울 표현식, 조건이 참이면 반환할 명령문, 조건이 거짓이면 반환할 명령문 .

SELECT name, age, IF(age >= 18, "YES", "NO") AS OVER_18
FROM names;

위의 쿼리는 항목의 이름과 나이를 선택한 다음 OVER_18이라고 하는 조건을 선택합니다. SQL 부분 결과가 아래에 표시됩니다(이 SQL Fiddle에서 전체 결과를 볼 수 있음).

이름 나이 OVER_18
브렛 스타킹스 55
바비 아이켈 76
바비 인형 50
일렉트라 블레이즈비츠 47
에스트렐라 볼리스 57
워싱턴 피트우드 75
파이드라 테르트레 27
니콜리나 엘리 76
휴 휴슨 86
감히 라비리어스 59
캐드 레빈스 13 아니요

IFNULL()

IFNULL() 첫 번째 표현식이 NULL인지 여부를 묻는 조건문입니다. 그렇다면 첫 번째 표현식이 아닌 두 번째 표현식을 리턴합니다.

IFNULL(NULL, 2) ⇒ returns 2
IFNULL(0, 4) ⇒ returns 0

SELECT name, IFNULL(age, "NOT ENTERED") AS age
FROM names;

이 MySQL 문은 "NOT ENTERED" 문자열로 모든 NULL 항목을 덮어쓸 age라는 열을 반환합니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

NULLIF()

NULLIF() 함수에 전달된 두 표현식이 모두 같으면 NULL을 반환합니다.

SELECT name, NULLIF(name, age) AS 
FROM names;

이름과 나이가 같은 경우는 아마 절대 없을 것이기 때문에 이것은 극단적인 예입니다. 그러나 이것이 적어도 구문이 작성되는 방식입니다. 이 문장 블록이 도움이 될 경우를 생각해 볼 수 있습니까?

결론

MySQL에는 데이터 흐름을 제어할 수 있는 몇 가지 다른 if 함수가 있습니다. 이러한 개념은 작업 중인 데이터베이스로 변환됩니다. 특정 데이터베이스에 대한 구문에 대한 자세한 내용은 문서를 확인하십시오.