MariaDB / 연산자 / 비교 연산자

MariaDB의 비교 연산자에 대하여 알아본다. 예제로 사용하는 테이블은 아래의 데이터를 가진 T_1이라는 테이블이다.

C_1의 데이터 형식은 정수, C_2의 데이터 형식은 문자, C_3의 데이터 형식은 날짜이다.

+----+------+------+------------+
| ID | C_1  | C_2  | C_3        |
+----+------+------+------------+
|  1 |    1 | A    | 2022-01-01 |
|  2 |    2 | B    | 2022-01-02 |
|  3 |    3 | C    | 2022-01-03 |
|  4 | NULL | A    | 2022-01-04 |
|  5 | NULL | NULL | 2022-01-05 |
|  6 |    1 | NULL | NULL       |
|  7 |    2 | B    | 2022-01-07 |
|  8 |    3 | C    | 2022-01-08 |
+----+------+------+------------+

같다

같은 것을 찾을 때는 =를 사용한다. 데이터 형식이 숫자인 경우 따옴표를 해도 되고 안 해도 되나, 문자인 경우 따옴표를 해야 한다.

  • C_1의 값이 3이면 1을 반환한다.
SELECT
  *,
  C_1 = 3 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    0 |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+
  • C_2의 값이 A이면 1을 반환한다.
SELECT
  *,
  C_2 = 'A' AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 |    1 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+

같지 않다

같지 않을 것을 찾을 때는 != 또는 <>를 사용한다.

  • C_2의 값이 존재하고 A가 아니면 1을 반환한다.
SELECT
  *,
  C_2 != 'A' AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 |    0 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+

크다 / 작다 / 크거나 같다 / 작거나 같다

크다는 >, 작다는 <, 크거나 같다는 >=, 작거나 같다는 <=를 사용한다.

  • C_1의 값이 존재하고 2보다 크면 1을 반환한다.
SELECT
  *,
  C_1 > 2 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    0 |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+
  • C_1의 값이 존재하고 2보다 크거나 같으면 1을 반환한다.
SELECT
  *,
  C_1 >= 2 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    0 |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+
  • C_1의 값이 존재하고 2보다 작으면 1을 반환한다.
SELECT
  *,
  C_1 < 2 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    1 |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+
  • C_1의 값이 존재하고 2보다 작거나 같으면 1을 반환한다.
SELECT
  *,
  C_1 <= 2 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    1 |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+
  • 데이터 형식이 문자인 경우 알파벳순으로 대소를 비교한다.
SELECT
  *,
  C_2 >= 'B' AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 |    0 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+
  • 데이터 형식이 날짜인 경우 날짜순으로 대소를 비교한다.
SELECT
  *,
  C_3 >= '2022-01-03' AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 |    1 |
|  5 | NULL | NULL | 2022-01-05 |    1 |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+

BETWEEN / NOT BETWEEN

BETWEEN A AND B라 하면 A 이상 B 이하의 데이터를 추출한다.

  • C_1의 값이 존재하고 2 이상 3 이하이면 1을 반환한다.
SELECT
  *,
  C_1 BETWEEN 2 AND 3 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    0 |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+

NOT BETWEEN A AND B라 하면 A 이상 B 이하가 아닌 데이터를 추출한다.

  • C_1의 값이 존재하고 2 이상 3 이하가 아니면 1을 반환한다.
SELECT
  *,
  C_1 NOT BETWEEN 2 AND 3 AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 | NULL |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       |    1 |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+

COALESCE

목록 안의 값 중 NULL이 아닌 첫 번째 값을 출력한다. 모든 값이 NULL이면 NULL을 출력한다.

SELECT
  C_2,
  C_3,
COALESCE( C_2, C_3 ) AS R
FROM T_1
;
+------+------------+------------+
| C_2  | C_3        | R          |
+------+------------+------------+
| A    | 2022-01-01 | A          |
| B    | 2022-01-02 | B          |
| C    | 2022-01-03 | C          |
| A    | 2022-01-04 | A          |
| NULL | 2022-01-05 | 2022-01-05 |
| NULL | NULL       | NULL       |
| B    | 2022-01-07 | B          |
| C    | 2022-01-08 | C          |
+------+------------+------------+

GREATEST / LEAST

GREATEST는 목록에서 가장 큰 값을 선택한다.

SELECT GREATEST( 1, 2, 3, 4, 5 );
+---------------------------+
| GREATEST( 1, 2, 3, 4, 5 ) |
+---------------------------+
|                         5 |
+---------------------------+

데이터가 문자인 경우 알파벳순으로 크기를 따진다.

SELECT GREATEST( 'A', 'B', 'C' );
+---------------------------+
| GREATEST( 'A', 'B', 'C' ) |
+---------------------------+
| C                         |
+---------------------------+

LEAST는 목록에서 가장 작은 값을 선택한다.

SELECT LEAST( 1, 2, 3, 4, 5 );
+------------------------+
| LEAST( 1, 2, 3, 4, 5 ) |
+------------------------+
|                      1 |
+------------------------+

데이터가 문자인 경우 알파벳순으로 크기를 따진다.

SELECT LEAST( 'A', 'B', 'C' );
+------------------------+
| LEAST( 'A', 'B', 'C' ) |
+------------------------+
| A                      |
+------------------------+

IN / NOT IN

IN을 사용하면 여러 값 중 하나에 해당하는 데이터를 추출할 수 있다.

  • C_2의 값이 A 또는 C이면 1을 반환한다.
SELECT
  *,
  C_2 IN ( 'A', 'C' ) AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    1 |
|  2 |    2 | B    | 2022-01-02 |    0 |
|  3 |    3 | C    | 2022-01-03 |    1 |
|  4 | NULL | A    | 2022-01-04 |    1 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    0 |
|  8 |    3 | C    | 2022-01-08 |    1 |
+----+------+------+------------+------+

NOT IN을 사용하면 여러 값에 해당하지 않는 데이터를 추출할 수 있다.

  • C_2의 값이 존재하고 A가 아니고 C가 아니면 1을 반환한다.
SELECT
  *,
  C_2 NOT IN ( 'A', 'C' ) AS R
FROM T_1
;
+----+------+------+------------+------+
| ID | C_1  | C_2  | C_3        | R    |
+----+------+------+------------+------+
|  1 |    1 | A    | 2022-01-01 |    0 |
|  2 |    2 | B    | 2022-01-02 |    1 |
|  3 |    3 | C    | 2022-01-03 |    0 |
|  4 | NULL | A    | 2022-01-04 |    0 |
|  5 | NULL | NULL | 2022-01-05 | NULL |
|  6 |    1 | NULL | NULL       | NULL |
|  7 |    2 | B    | 2022-01-07 |    1 |
|  8 |    3 | C    | 2022-01-08 |    0 |
+----+------+------+------------+------+

INTERVAL

 

IS / IS NOT

 

IS NULL / IS NOT NULL

IS NULL로 값이 NULL인지 확인할 수 있다.

  • C_1의 값이 NULL이면 1을 반환한다.
SELECT
  *,
  C_1 IS NULL AS R
FROM T_1
;
+----+------+------+------------+---+
| ID | C_1  | C_2  | C_3        | R |
+----+------+------+------------+---+
|  1 |    1 | A    | 2022-01-01 | 0 |
|  2 |    2 | B    | 2022-01-02 | 0 |
|  3 |    3 | C    | 2022-01-03 | 0 |
|  4 | NULL | A    | 2022-01-04 | 1 |
|  5 | NULL | NULL | 2022-01-05 | 1 |
|  6 |    1 | NULL | NULL       | 0 |
|  7 |    2 | B    | 2022-01-07 | 0 |
|  8 |    3 | C    | 2022-01-08 | 0 |
+----+------+------+------------+---+

IS NOT NULL로 값이 NULL이 아닌지 확인할 수 있다.

  • C_1의 값이 NULL이 아니면 1을 반환한다.
SELECT
  *,
  C_1 IS NOT NULL AS R
FROM T_1
;
+----+------+------+------------+---+
| ID | C_1  | C_2  | C_3        | R |
+----+------+------+------------+---+
|  1 |    1 | A    | 2022-01-01 | 1 |
|  2 |    2 | B    | 2022-01-02 | 1 |
|  3 |    3 | C    | 2022-01-03 | 1 |
|  4 | NULL | A    | 2022-01-04 | 0 |
|  5 | NULL | NULL | 2022-01-05 | 0 |
|  6 |    1 | NULL | NULL       | 1 |
|  7 |    2 | B    | 2022-01-07 | 1 |
|  8 |    3 | C    | 2022-01-08 | 1 |
+----+------+------+------------+---+

ISNULL

ISNULL은 값이 NULL이면 1을, NULL이 아니면 0을 반환한다.

SELECT
  C_1,
  ISNULL( C_1 ) 
FROM T_1
;
+------+---------------+
| C_1  | ISNULL( C_1 ) |
+------+---------------+
|    1 |             0 |
|    2 |             0 |
|    3 |             0 |
| NULL |             1 |
| NULL |             1 |
|    1 |             0 |
|    2 |             0 |
|    3 |             0 |
+------+---------------+
같은 카테고리의 다른 글
DBeaver / MariaDB / 데이터베이스 만들기, 삭제하기

DBeaver / MariaDB / 데이터베이스 만들기, 삭제하기

데이터베이스 만들기 Databases를 선택하고 마우스 우클릭합니다. 팝업 메뉴에서 를 클릭합니다. 데이터베이스 이름을 입력하고, Charset과 Collation을 선택한 후 를 클릭하면... 데이터베이스가 생성됩니다. 데이터베이스 수정하기 왼쪽에서 데이터베이스를 두 번 클릭하면 데이터베이스 정보가 나옵니다. 필요한 수정을 하고 를 클릭한 다음... 팝업 창의 내용을 확인하고 를 클릭하면... 데이터베이스가 수정됩니다. 데이터베이스 삭제하기 데이터베이스를 선택하고 마우스 우클릭합니다. 팝업 메뉴에서 를 클릭하고... 를 클릭하면... 데이터베이스가 삭제됩니다.

MariaDB / 함수 / IF, IFNULL, NULLIF

MariaDB / 함수 / IF, IFNULL, NULLIF

IF 문법 IF( expression1, expression2, expression3 ) expression1가 참이면 expression2를, 거짓이면 expression3을 반환합니다. 예제 SELECT IF( 2>3, 'T', 'F' ); +---------------------+ | IF( 2>3, 'T', 'F' ) | +---------------------+ | F | +---------------------+ 2>3이 거짓이므로 F를 반환합니다. SELECT IF( 2<3, 'T', 'F' ); +---------------------+ | IF( ...

MariaDB / TABLE / 열 추가하기, 열 삭제하기, 열 순서 변경하기, 열 데이터 타입 변경하기

MariaDB / TABLE / 열 추가하기, 열 삭제하기, 열 순서 변경하기, 열 데이터 타입 변경하기

데이터베이스 만들기 열(Column) 추가, 삭제 등을 해볼 테스트용 데이터베이스 jbTest를 만듭니다. CREATE DATABASE jbTest; 데이터베이스로 들어갑니다. USE jbTest; jbColumn1, jbColumn2, jbColumn3 세 개의 열을 가진 테이블 jbTable1을 만듭니다. CREATE TABLE jbTable1 ( jbColumn1 INT, jbColumn2 INT, jbColumn3 INT ) ; 다음은 현재 테이블 구조입니다. MariaDB > DESC jbTable1; +-----------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | ...

MariaDB / 함수 / YEAR, MONTH, DAY / 날짜 데이터에서 년, 월, 일을 반환하는 함수

MariaDB / 함수 / YEAR, MONTH, DAY / 날짜 데이터에서 년, 월, 일을 반환하는 함수

날짜 형식의 데이터에서 년 또는 월 또는 일을 분리해서 출력하고 싶다면 YEAR, MONTH, DATE 함수를 사용합니다. YEAR 날짜 데이터에서 년을 출력하고 싶다면 YEAR 함수를 사용합니다. MariaDB > SELECT YEAR('2020-11-12') as Year; +------+ | Year | +------+ | 2020 | +------+ MONTH 날짜 데이터에서 월을 출력하고 싶다면 MONTH 함수를 사용합니다. MariaDB > SELECT MONTH('2020-11-12') as Month; +-------+ | Month | +-------+ | 11 ...

MariaDB / Procedure

MariaDB / Procedure

예제로 사용한 데이터베이스는 employees이다. Procedure Procedure를 이용하면 여러 쿼리를 한 번에 실행할 수 있다. 기본 예제 Procedure 만들기 delimiter를 다른 것으로 변경한다. MariaDB > delimiter ## create procedure로 procedure를 만든다. procedure 이름 뒤에 괄호에는 매개변수가 들어간다. p_departments라는 이름의 매개변수가 없는 Procedure이다. departments 테이블의 모든 데이터를 출력한다. MariaDB > create procedure p_departments() -> begin -> select ...

MariaDB / 함수 / LENGTH, BIT_LENGTH, CHAR_LENGTH / 문자열 길이 출력하는 함수

MariaDB / 함수 / LENGTH, BIT_LENGTH, CHAR_LENGTH / 문자열 길이 출력하는 함수

LENGTH LENGTH는 바이트(byte)로 계산된 문자열의 길이를 출력합니다. 영어. 숫자, 특수문자 등은 1로, 한글은 3으로 계산합니다. SELECT LENGTH( 'A1#가' ); +--------------------+ | LENGTH( 'A1#가' ) | +--------------------+ | 6 | +--------------------+ BIT_LENGTH BIT_LENGTH는 비트(bit)로 계산된 문자열의 길이를 출력합니다. 영어, 숫자, 특수문자 등은 ...

MariaDB / 함수 / ROUND

MariaDB / 함수 / ROUND

ROUND는 반올림하는 함수이다. 별도 설정을 하지 않으면 소수 첫째 자리에서 반올림한다. SELECT ROUND( 1.4 ); +--------------+ | ROUND( 1.4 ) | +--------------+ | 1 | +--------------+ SELECT ROUND( 1.5 ); +--------------+ | ROUND( 1.5 ) | +--------------+ | 2 ...

MariaDB / 함수 / INSERT / 일정 구간 문자열 교체하는 함수

MariaDB / 함수 / INSERT / 일정 구간 문자열 교체하는 함수

INSERT는 일정 구간의 문자열을 다른 문자열로 교체하는 함수입니다. INSERT( string, position, length, new-string ) string : 원본 문자열입니다. position : 구간이 시작하는 위치입니다. length : 구간의 길이입니다. new-string : 교체될 문자열입니다. 예를 들어 다음과 같은 경우, 1234567에서 4번째 문자부터 2개를 지우고 ABC를 넣습니다. 즉, 45를 지우고 ABC를 넣습니다. MariaDB > SELECT INSERT( '1234567', 4, 2, 'ABC' ...

MariaDB / Query / DISTINCT / 중복 데이터 제거

MariaDB / Query / DISTINCT / 중복 데이터 제거

DISTINCT를 이용하면 중복 값을 제거할 수 있습니다. 예를 들어 다음과 같은 test 테이블이 있다고 할 때... SELECT * FROM test; +---------+---------+---------+ | Column1 | Column2 | Column3 | +---------+---------+---------+ | 1 | A | 1 | | ...

MariaDB / 함수 / LIKE

MariaDB / 함수 / LIKE

다음과 같은 테이블이 있습니다. 열의 이름은 column1, 데이터는 12345, 23456 두 개가 있습니다. MariaDB > SELECT * FROM table1; +---------+ | column1 | +---------+ | 12345 | | 23456 | +---------+ WHERE를 이용하면 특정 값을 갖는 행을 출력할 수 있습니다. 예를 들어 다음은 column1의 값이 12345인 데이터를 출력합니다. MariaDB > SELECT * FROM table1 WHERE ...