Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 PHP stripos()와 동일한 기능을 하는 함수는? INSTR() 완벽 정리

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()과 반대이며, 검색 시작 위치를 세 번째 인자로 지정할 수 있다는 차이점이 있습니다. 상황에 맞게 두 함수를 활용하면 됩니다.