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

MySQL에서 문자로 시작하는 코드(예: J23, C13) 문자+숫자 순으로 정렬하기

문자+숫자 형태의 코드(예: 'J23', 'A61')를 문자순, 숫자순으로 정렬하려면 LEFT()로 첫 글자, SUBSTR()로 나머지 숫자 부분을 분리해 정렬 키로 쓰세요.

테이블 생성 및 데이터 삽입

mysql> CREATE TABLE DemoTable (
    -> Code VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.70 sec)
mysql> INSERT INTO DemoTable VALUES('J23');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO DemoTable VALUES('C13');
Query OK, 1 row affected (0.21 sec)
mysql> INSERT INTO DemoTable VALUES('A61');
Query OK, 1 row affected (0.11 sec)
mysql> INSERT INTO DemoTable VALUES('D56');
Query OK, 1 row affected (0.11 sec)

정렬 전

mysql> SELECT * FROM DemoTable;
+------+
| Code |
+------+
| J23  |
| C13  |
| A61  |
| D56  |
+------+
4 rows in set (0.00 sec)

문자순, 숫자순 정렬

mysql> SELECT * FROM DemoTable
    -> ORDER BY LEFT(Code, 1), CAST(SUBSTR(Code, 2) AS UNSIGNED);
+------+
| Code |
+------+
| A61  |
| C13  |
| D56  |
| J23  |
+------+
4 rows in set (0.05 sec)

해설: LEFT(Code,1)로 첫 문자(A, C, D, J)순 정렬, CAST(SUBSTR(Code,2) AS UNSIGNED)로 나머지 숫자 부분(61, 13, 56, 23)을 숫자로 변환해 2차 정렬. 문자열 정렬만 하면 'A61', 'C13', 'D56', 'J23' 순이지만, 숫자까지 고려하면 'C13'(13), 'D56'(56), 'J23'(23), 'A61'(61) 순이 됩니다. 위 쿼리는 1차: 문자, 2차: 숫자 순입니다.

  1. MySQL-এ ডুপ্লিকেট কলাম ভ্যালু অনুযায়ী অন্য কলামের যোগফল (SUM + GROUP BY)

  2. MySQL에서 IS NOT NULL로 NULL 제외하고 NOT NULL 값만 다른 테이블로 복사하기

  3. MySQL-এ স্ট্রিং কলাম থেকে নির্দিষ্ট প্যাটার্নের রেকর্ড বের করা (স্ট্রিং, সংখ্যা, স্পেশাল ক্যারেক্টার)

  4. MySQL-এ সংখ্যা মিশ্র স্ট্রিং সর্ট করুন