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

MySQL에서 LOCATE()로 부분문자열 위치 기준 정렬하기

LOCATE('찾을문자열', 컬럼)으로 특정 문자열이 처음 나타나는 위치를 구해 ORDER BY에 사용하면 검색어 위치순 정렬이 가능합니다.

테이블 생성 및 데이터 삽입

mysql> CREATE TABLE DemoTable1838 (Subject VARCHAR(100));
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO DemoTable1838 VALUES('MongoDB MySQL');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1838 VALUES('MySQL Java');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO DemoTable1838 VALUES('JavaWithMySQL');
Query OK, 1 row affected (0.00 sec)

데이터 조회

mysql> SELECT * FROM DemoTable1838;
+---------------+
| Subject       |
+---------------+
| MongoDB MySQL |
| MySQL Java    |
| JavaWithMySQL |
+---------------+
3 rows in set (0.00 sec)

'MySQL' 단어 위치순 정렬 (앞에 있을수록 상위)

mysql> SELECT * FROM DemoTable1838
    -> WHERE Subject LIKE '%MySQL%'
    -> ORDER BY LOCATE('MySQL', Subject);
+---------------+
| Subject       |
+---------------+
| MySQL Java    |
| MongoDB MySQL |
| JavaWithMySQL |
+---------------+
3 rows in set (0.00 sec)

해설: 'MySQL Java' → 위치 1, 'MongoDB MySQL' → 위치 9, 'JavaWithMySQL' → 위치 10. 위치 작은 순(앞쪽 우선) 정렬. LOCATE는 1-based 인덱스, 못 찾으면 0 반환. INSTR(컬럼, '문자열')도 동일 기능. 대소문자 구분은 콜레이션 따름.

  1. MySQL-এ শর্ত অনুযায়ী রেকর্ড রিপ্লেস করা

  2. MySQL-এ JOIN ব্যবহার করে দুটি টেবিলের রেজাল্ট মার্জ করা

  3. C++-এ সাবস্ট্রিং

  4. Amazon সার্চ রেজাল্ট রিভিউ সংখ্যা অনুযায়ী সর্ট করার উপায়