SQL CHARINDEX / INSTR - 문자가있는지 찾는 함수

문자가 포함되어있는지 확인하는 여부에 쓰이는 함수입니다.

매우 자주 쓰임으로 꼭 알아두면 유용합니다.

 

1. MS-SQL에서는 CHARINDEX() 함수를 사용합니다.

SELECT CHARINDEX('A', 'AIDEN')

- 'AIDEN' 이라는 문자열 내에서 'A'라는 문자가 있는지 없는지 확인합니다. 있다면 문자의 위치를 리턴합니다.

  결과 : 1 ( 'AIDEN'이라는 문자열중 'A'의 위치는 첫 번째이기에 1을 리턴합니다. )

  * CHARINDEX('A', 'AIDEN') 이 아니라 CHARINDEX('D', 'AIDEN')이라면 3을 리턴합니다. ( D 가 3번째에 위치함. )

  'A'라는 문자가 없다면 0을 리턴합니다.

 

 

2. Oracle과 MySql에서는 INSTR() 함수를 사용합니다.

SELECT INSTR('AIDEN', 'A')

- 'AIDEN'이라는 문자열 내에서 'A'라는 문자가 있는지 없는지 확인합니다. 있다면 문자의 위치를 리턴합니다.

  결과 : 1 ( 'AIDEN'이라는 문자열중 'A'의 위치는 첫 번째이기에 1을 리턴합니다. )

  * INSTR('AIDEN', 'A') 이 아니라 INSTR('AIDEN', 'D')이라면 3을 리턴합니다. ( D 가 3번째에 위치함. )

  'A'라는 문자가 없다면 0을 리턴합니다.

 

3. 실제 사용 예

- MS-SQL 기준으로 설명드리겠습니다. ( Oracle, MySql 은 함수만 바꿔 사용하면 된다고 생각하시면 됩니다. )

NAME E-MAIL
AIDEN aiden@naver.com
JOHN john@google.com
MATTHEW matthew@nate.com

위와 같은 테이블에서 NAVER 메일을 사용하고 있는 사람을 추려내려고 할 때

SELECT NAME
  FROM TABLE
 WHERE CHARINDEX('naver', E-MAIL) > 0

결과는 E-MAIL에 'naver'라는 문자가 포함된 AIDEN 이 출력됩니다.