PHP의 stripos() 함수에 해당하는 MySQL 함수는 바로 INSTR()입니다. INSTR() 함수는 하나의 문자열 안에서 특정 문자열이 처음 나타나는 위치(인덱스)를 반환합니다.
기본 문법은 다음과 같습니다.
SELECT INSTR(yourColumnName, yourWord) AS anyAliasName FROM yourTableName;
예제 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> CREATE TABLE DemoTable
-> (
-> Title text
-> );
Query OK, 0 rows affected (1.22 sec)INSERT 명령을 사용하여 테이블에 샘플 데이터를 입력합니다.
mysql> INSERT INTO DemoTable VALUES('MySQL is my favourite subject');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable VALUES('MongoDB is not my favourite subject');
Query OK, 1 row affected (0.20 sec)SELECT 문으로 테이블의 전체 레코드를 조회해 보겠습니다.
mysql> SELECT *FROM DemoTable;
출력 결과
+-------------------------------------+ | Title | +-------------------------------------+ | MySQL is my favourite subject | | MongoDB is not my favourite subject | +-------------------------------------+ 2 rows in set (0.00 sec)
INSTR()로 문자열 위치 찾기
다음은 PHP의 stripos()처럼 문자열이 처음 등장하는 위치를 반환하는 쿼리입니다. 'favourite'이라는 단어가 각 레코드에서 몇 번째 위치에 있는지 확인할 수 있습니다.
mysql> SELECT INSTR(Title,'favourite') AS Position FROM DemoTable;
출력 결과
+----------+ | Position | +----------+ | 13 | | 19 | +----------+ 2 rows in set (0.00 sec)
참고 사항
INSTR() 함수의 대소문자 구분 여부는 컬럼의 콜레이션(collation) 설정에 따라 달라집니다. 일반적으로 MySQL의 기본 콜레이션(예: utf8mb4_general_ci)은 대소문자를 구분하지 않기 때문에, PHP의 stripos()처럼 대소문자를 무시하고 검색하는 효과를 얻을 수 있습니다.
또한 비슷한 역할을 하는 LOCATE() 함수도 있습니다. LOCATE(substr, str)는 인자 순서가 INSTR()과 반대이며, 검색 시작 위치를 세 번째 인자로 지정할 수 있다는 차이점이 있습니다. 상황에 맞게 두 함수를 활용하면 됩니다.