다른 프로그래밍 언어와 마찬가지로 구조화된 쿼리 언어에는 데이터 흐름을 제어하는 조건문이 있습니다. 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 함수가 있습니다. 이러한 개념은 작업 중인 데이터베이스로 변환됩니다. 특정 데이터베이스에 대한 구문에 대한 자세한 내용은 문서를 확인하십시오.