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 |
+------+---------------+

Related Posts

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 / 함수 / SUBSTRING, SUBSTRING_INDEX / 문자열 추출하는 함수

MariaDB / 함수 / SUBSTRING, SUBSTRING_INDEX / 문자열 추출하는 함수

SUBSTRING 12345678의 5번째부터 끝까지 문자열을 추출합니다. SELECT SUBSTRING( '12345678', 5 ); +----------------------------+ | SUBSTRING( '12345678', 5 ) | +----------------------------+ | 5678 | +----------------------------+ SELECT SUBSTRING( '12345678' FROM 5 ); +--------------------------------+ | SUBSTRING( '12345678' FROM 5 ) | +--------------------------------+ | 5678 ...

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

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

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

MariaDB / 함수 / REPLACE / 문자열 찾아서 바꾸는 함수

MariaDB / 함수 / REPLACE / 문자열 찾아서 바꾸는 함수

REPLACE는 특정 문자열을 찾아 다른 문자열로 바꾸는 함수입니다. 특정 위치의 문자열을 다른 문자열로 바꾸고 싶다면 INSERT 함수를 사용합니다. 문법 REPLACE( string, from_string, to_string ) string : 찾아서 바꾸는 대상이 되는 문자열 from_string : 찾을 문자열 to_string : 교체될 문자열 예제 1 ababab에서 b를 찾아 c로 바꿉니다. SELECT REPLACE( 'ababab', 'b', 'c' ); +-------------------------------+ | REPLACE( 'ababab', 'b', 'c' ) | +-------------------------------+ | acacac ...

MariaDB / 함수 / LEFT, RIGHT / 문자열의 왼쪽 또는 오른쪽의 일부를 출력하는 함수

MariaDB / 함수 / LEFT, RIGHT / 문자열의 왼쪽 또는 오른쪽의 일부를 출력하는 함수

LEFT는 문자열의 왼쪽부터 일정 길이만큼 출력하는 함수입니다. LEFT( string,length ) SELECT LEFT( '12345678', 3 ); +-----------------------+ | LEFT( '12345678', 3 ) | +-----------------------+ | 123 | +-----------------------+ RIGHT는 문자열의 왼쪽부터 일정 길이만큼 출력하는 함수입니다. RIGHT( string, length ) SELECT RIGHT( '12345678', 3 ...

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 / Query / EVENT / 만들기, 수정하기, 삭제하기

MariaDB / Query / EVENT / 만들기, 수정하기, 삭제하기

EVENT를 사용하기 위한 설정 방법 1 50-server.cnf에 다음 코드를 추가하고 MariaDB를 다시 시작한다. 영구적으로 적용된다. event_scheduler = ON 방법 2 다음과 같이 설정한다. 단, MariaDB를 다시 시작하면 OFF로 변경된다. SET GLOBAL event_scheduler = ON; 설정 상태 확인 SHOW variables LIKE 'event%'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | event_scheduler | ON | +-----------------+-------+ EVENT 만들기 이벤트 이름 : EVENT_TEST 이벤트 ...

MariaDB / Query / UNION, UNION ALL

MariaDB / Query / UNION, UNION ALL

UNION 또는 UNION ALL을 이용하면 여러 테이블의 데이터를 합하여 출력할 수 있습니다. 예를 들어 다음과 같은 테이블과... SELECT * FROM test_1; +-------+-------+-------+ | col_1 | col_2 | col_3 | +-------+-------+-------+ | 1 | A | 1 | | 2 | ...

MariaDB / 연산자 / 비교 연산자

MariaDB / 연산자 / 비교 연산자

MariaDB의 비교 연산자에 대하여 알아본다. 예제로 사용하는 테이블은 아래의 데이터를 가진 T_1이라는 테이블이다. C_1의 데이터 형식은 정수, C_2의 데이터 형식은 문자, C_3의 데이터 형식은 날짜이다. +----+------+------+------------+ | ID | C_1 | C_2 | C_3 | +----+------+------+------------+ | 1 | 1 | A ...

DBeaver / MariaDB / 연결하는 방법

DBeaver / MariaDB / 연결하는 방법

MariaDB를 명령어로만 관리하는 것은 힘듭니다. 적절한 툴을 이용하면 작업 속도를 높일 수 있습니다. MariaDB를 관리하는 툴을 여러 가지가 있는데, 그 중 하나가 DBeaver입니다. Free multi-platform database tool for developers, database administrators, analysts and all people who need to work with databases. Supports all popular databases: MySQL, PostgreSQL, SQLite, Oracle, DB2, SQL ...