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

MySQL에서 특수문자가 포함된 문자열 정렬하기 (예: '2321/78/54-6')

슬래시(/)나 하이픈(-) 같은 특수문자가 포함된 문자열을 숫자 기준으로 정렬하려면 SUBSTRING()과 CAST()를 조합하여 정렬 키를 만들어야 합니다.

테이블 생성 및 데이터 삽입

mysql> CREATE TABLE DemoTable (
    -> Value VARCHAR(40)
    -> );
Query OK, 0 rows affected (0.59 sec)
mysql> INSERT INTO DemoTable VALUES('2321/78/54-6');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('2321/78/54-8');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('2321/78/54-5');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('2321/78/54-9');
Query OK, 1 row affected (0.21 sec)

정렬 전 데이터

mysql> SELECT * FROM DemoTable;
+--------------+
| Value        |
+--------------+
| 2321/78/54-6 |
| 2321/78/54-8 |
| 2321/78/54-5 |
| 2321/78/54-9 |
+--------------+
4 rows in set (0.00 sec)

특수문자 고려한 정렬 쿼리

mysql> SELECT * FROM DemoTable
    -> WHERE Value LIKE '2321/78/54%'
    -> ORDER BY SUBSTRING(Value, 1, 10), CAST(SUBSTRING(Value, 11) AS DECIMAL);
+--------------+
| Value        |
+--------------+
| 2321/78/54-9 |
| 2321/78/54-8 |
| 2321/78/54-6 |
| 2321/78/54-5 |
+--------------+
4 rows in set (0.05 sec)

해설: 앞 10자리(2321/78/54)는 문자열로 정렬하고, 11번째 문자부터는 숫자로 변환(CAST(... AS DECIMAL))하여 정렬합니다. 이렇게 하면 '5', '6', '8', '9' 순서가 아닌 '9', '8', '6', '5'와 같이 숫자 크기순으로 정렬됩니다.

  1. MySQL-এ RLIKE ব্যবহার করে একাধিক শব্দ দিয়ে রেকর্ড ফিল্টার করা

  2. MySQL-এ একাধিক LIKE অপারেটর ORDER BY-এ ব্যবহার করা

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

  4. MySQL-এ LIKE কোয়েরি ও LIMIT ব্যবহার করে ডাইনামিক অ্যারে সার্চ করা