কম্পিউটার টিউটোরিয়াল

MySQL에서 CONTAINS() 대신 CONCAT과 CURDATE로 연도 포함 여부 검사하기

MySQL에는 CONTAINS() 함수가 없습니다. LIKE와 CONCAT(), YEAR(CURDATE())를 조합해 현재 연도가 문자열에 포함되는지 검사합니다.

현재 날짜 확인

mysql> SELECT CURDATE();
+------------+
| CURDATE()  |
+------------+
| 2019-11-28 |
+------------+
1 row in set (0.00 sec)

테이블 생성 및 데이터 삽입

mysql> CREATE TABLE DemoTable1803 (
    -> Name VARCHAR(20),
    -> JoiningYear VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1803 VALUES('Chris','2020/2017');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1803 VALUES('David','2017/2018');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1803 VALUES('Adam','2018/2019');
Query OK, 1 row affected (0.00 sec)

데이터 조회

mysql> SELECT * FROM DemoTable1803;
+-------+-------------+
| Name  | JoiningYear |
+-------+-------------+
| Chris | 2020/2017   |
| David | 2017/2018   |
| Adam  | 2018/2019   |
+-------+-------------+
3 rows in set (0.00 sec)

현재 연도(2019)가 JoiningYear에 포함된 행 조회

mysql> SELECT * FROM DemoTable1803
    -> WHERE JoiningYear LIKE CONCAT('%', YEAR(CURDATE()), '%');
+------+-------------+
| Name | JoiningYear |
+------+-------------+
| Adam | 2018/2019   |
+------+-------------+
1 row in set (0.00 sec)

해설: YEAR(CURDATE()) → 2019. CONCAT('%', 2019, '%') → '%2019%'. LIKE '%2019%'로 '2019' 포함 여부 검사. '2018/2019'만 매칭. FIND_IN_SET()는 콤마 구분자 전용이므로 여기선 부적합.

  1. MySQL-এ @ চিহ্ন ব্যবহার করে ইউজার-ডিফাইনড ভেরিয়েবল ডিক্লেয়ার ও ব্যবহার

  2. MySQL-এ WITH ROLLUP সঠিকভাবে ব্যবহার করা

  3. MySQL-এ COUNT() এর ভিতরে CASE শর্ত ব্যবহার করে গণনা করা

  4. MySQL VIEW-এ WHERE ক্লজ ব্যবহার করা