>  기사  >  데이터 베이스  >  MySQL 기본 튜토리얼 6 - 함수 제어 흐름 함수

MySQL 기본 튜토리얼 6 - 함수 제어 흐름 함수

黄舟
黄舟원래의
2017-02-24 11:09:341019검색

구문:

  • CASE WHEN [값 비교] THEN 결과 [WHEN [비교값] THEN 결과 ...] [ELSE 결과] END CASE WHEN [조건] THEN 결과 [WHEN [조건] THEN 결과 ...] [ELSE 결과] END

at 첫 번째 솔루션의 반환 결과에서 =비교값입니다. 두 번째 시나리오의 반환 결과는 첫 번째 시나리오의 실제 결과입니다. 일치하는 결과 값이 없으면 ELSE 이후의 결과가 반환됩니다. ELSE 부분이 없으면 반환 값은 NULL입니다.

mysql> SELECT CASE 1 WHEN 1 THEN 'one'

-> WHEN 2 THEN 'two' ELSE 'more' END;

-> '1'

mysql> 1>0일 때 CASE 선택 THEN 'true' ELSE 'false' END;

-> ; 'true'

mysql> SELECT CASE BINARY 'B'

-> 'a' THEN 1 WHEN 'b' THEN 2 END;

-> NULL

CASE 표현식의 기본 반환 값 유형은 호환되는 반환 값 컬렉션 유형이지만 구체적인 상황은 해당 컨텍스트에 따라 다릅니다. 문자열 컨텍스트에서 사용되는 경우 결과 문자열을 반환합니다. 숫자 컨텍스트에서 사용되는 경우 결과는 십진수, 실수 또는 정수 값으로 반환됩니다.

  • IF(

    expr1,expr2,expr3)

expr1이 TRUE(expr1 <> 0 및 expr1 <> NULL)인 경우 IF()의 반환 값은 입니다. expr2 ; 그렇지 않으면 반환 값은 expr3입니다. IF()의 반환 값은 상황에 따라 숫자 값 또는 문자열 값입니다.

mysql>

SELECT IF(1>2,2,3);

-> 3

mysql> 1<2,'예','아니요');

-> '예'

mysql> '),'아니요','예');

-> '아니요'

if

expr2

또는

expr3 If 하나만 명시적으로 NULL인 경우 IF() 함수의 결과 유형은 NULL이 아닌 표현식의 결과 유형입니다. expr1

은 정수 값으로 평가됩니다. 즉, 부동 소수점 값이나 문자열 값의 유효성을 검사하는 경우 비교 연산을 사용하여 확인해야 합니다.

mysql> SELECT IF(0.1,1,0);

-> 0

mysql> ;>0,1,0);

-> 1표시된 첫 번째 예에서는 0.1이 변환되므로 IF(0.1)의 반환 값은 0입니다. 정수 값으로 변환하여 IF(0) 테스트를 수행합니다. 이는 원하는 상황이 아닐 수도 있습니다. 두 번째 예에서는 비교를 통해 원래 부동 소수점 값이 0이 아닌지 확인합니다. 비교 결과에는 정수를 사용하십시오.

IF()의 기본 반환 유형(임시 테이블에 저장될 때 중요함)은 다음과 같이 계산됩니다.

반환 값

表达式 返回值
expr2 或expr3 返回值为一个字符串。 字符串
expr2 或expr3 返回值为一个浮点值。 浮点
expr2 或 expr3 返回值为一个整数。 整数
expr2 또는 expr3 반환 값은 문자열입니다.
문자열
expr2 또는 expr3 반환 값은 부동 소수점 값입니다. 부동 소수점
expr2 또는 expr3 반환 값은 정수입니다. 정수

expr2expr3이 모두 문자열이고 문자열 중 하나라도 대소문자를 구분하는 경우 반환된 결과는 대소문자를 구분합니다.

  • IFNULL(expr1,expr2)

ifexpr1 NULL이 아닌 경우 IFNULL()의 반환 값은 expr1이고, 그렇지 않은 경우 반환 값은 expr2입니다. IFNULL()의 반환 값은 사용되는 컨텍스트에 따라 숫자 또는 문자열입니다.

mysql> SELECT IFNULL(1,0);

-> 1

mysql> ;

-> 10

mysql>

SELECT IFNULL(1/0,10);

-> >

mysql>

SELECT IFNULL(1/0,'예');

-> '예'

IFNULL(

expr1

,expr2) 기본 결과 값은 STRING, REAL 또는 INTEGER 순서로 두 표현식 중 더 "일반적인" 것입니다. 표현식 기반 테이블의 경우를 가정해 보겠습니다. 그렇지 않으면 MySQL이 IFNULL()의 반환 값을 내부 메모리의 임시 테이블에 저장해야 합니다. CREATE TABLE tmp SELECT IFNULL(1,'test') AS test;

이 예에서 테스트 열은 CHAR(4) 유형입니다.

    NULLIF(
  • expr1

    ,expr2)

  • if
expr1

= expr2가 true이면 반환 값은 NULL이고, 그렇지 않으면 반환 값은 expr1입니다. 이는 CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END와 동일합니다. mysql>

SELECT NULLIF(1,1);

-> NULL

mysql> ;

-> 1

매개변수가 동일하지 않으면 MySQL이 두 번 얻은 값은 expr1 입니다.

위 내용은 MySQL Basic Tutorial 6 - Function Control Process Function의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.