문자가 포함되어있는지 확인하는 여부에 쓰이는 함수입니다.
매우 자주 쓰임으로 꼭 알아두면 유용합니다.
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 | |
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 이 출력됩니다.