VB 에서 LIKE 비교연산자를 사용하는 방법
SQL 을 사용하다보면 조건문에서 LIKE 비교연산자를 많이 사용합니다. 그런데 VB 혹은 VBA 에서도 이와 비슷한 LIKE
문을 사용할 수 있다는 것을 아셨나요?
LIKE 비교연산자란?
SQL 에서 LIKE 를 사용하는 방법은 아래와 같습니다.
SELECT * FROM STOCK_PRICE
WHERE STOCKNAME LIKE '삼성%'
AND TRADEDATE='2016-12-29'
위 쿼리를 해석해보자면 STOCK_PRICE
라는 테이블에서 주식의 이름이 삼성으로 시작 하는 모든 주식들의 2016년 12월 29일자 주가 데이터를 불러오라는 것입니다.
VB 에서 LIKE 사용하기
VB 에서도 위와 같은 LIKE
를 사용하기 위해서는 아래와 같이 사용할 수 있습니다.
예를들어 S&P500 을 기초자산으로 콜 또는 풋 옵션의 코드가 일정한 룰을 가지고 있다고 합시다. SPX 라는 글자로 시작하면서 중간에는 옵션의 만기 월이 숫자로 붙고, 그 다음 콜옵션은 C, 풋옵션은 P 가 붙고 마지막으로 해당 옵션의 행사가격이 붙는다고 해봅시다. 아래와 같은 것이죠.
- SPX9C2450
- SPX10C2500
- SPX9P2450
- SPX10P2500
이 종목코드들이 SPX 를 기초자산으로 하는 코드들이 맞는지 확인하기 위해서는 아래와 같이 IF
문을 작성할 수 있습니다.
IF STOCKCODE LIKE "SPX#*[C,P]#*" THEN
MSGBOX "이 옵션은 S&P500 지수를 기초자산으로 하는 콜 또는 풋옵션입니다."
END IF
LIKE
비교연산자 뒤의 붙은 조건의 패턴이 어떤 것을 의미하는지 하나씩 알아봅시다.
Like 연산자 패턴들
?
패턴에 ?
(물음표)를 사용하면 어떤 글자든지 한 글자가 있을 경우 조건을 충족 합니다.
IF CODE LIKE "S?X" THEN
MSGBOX "OK"
END IF
위 코드에서 CODE
값이 S1X 혹은 SZX 등의 경우라면 IF
문은 True
입니다. 주의할 점은 물음표는 무조건 1개의 글자(Single Character)라는 점입니다.
*
패턴에 *
을 사용하면 한 개 혹은 여러개, 심지어 문자가 없어도 조건을 충족 합니다.
IF CODE LIKE "S*X" THEN
MSGBOX "OK"
END IF
위 코드에서 CODE
값이 S1X, SZX 등일 때는 당연히 만족 하며, S11X 혹은 SX 일때도 IF
문은 True
입니다.
#
패턴에 #
을 사용하면 해당 문자가 1개의 숫자일때 조건을 충족합니다.
IF CODE LIKE "S#X" THEN
MSGBOX "OK"
END IF
위 코드에서 S1X 는 True
이지만, SAX 는 False
입니다.
[A-Z]
대괄호를 사용하면 글자의 레인지를 지정할 수도 있습니다.
IF CODE LIKE "S[A-Y]X" THEN
MSGBOX "OK"
END IF
위 코드에서는 SAX 는 True
이지만, SZX 는 False
입니다.
[!A-Z]
대괄호 안에 느낌표를 넣고 레인지를 지정하면 특정 문자가 해당 레인지 안에 포함되지 않아냐 조건을 충족 합니다.
IF CODE LIKE "S[!A-Y]X" THEN
MSGBOX "OK"
END IF
위 코드에서는 SAX 는 False
이지만, SZX 는 True
입니다.
[C,Z]
대괄호의 내용으로 쉼표를 사용해 특정 문자만 지정할 수 있습니다.
IF CODE LIKE "S[C,Z]X" THEN
MSGBOX "OK"
END IF
위 코드에서는 SAX 는 False
이고, SZX 는 True
입니다.
보통 VB에서는 LIKE 문을 잘 안쓰게 되지만, 그래도 익혀두면 라이트한 정규식 표현을 쓰는 느낌을 느낄 수 있습니다. 패턴을 잘 조합하여 사용해 보세요.
LIKE 비교연산자에 대한 더욱 자세한 내용은 아래 링크를 참고하시기 바랍니다.
댓글 남기기