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(컬럼, '문자열')도 동일 기능. 대소문자 구분은 콜레이션 따름.