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 비교연산자에 대한 더욱 자세한 내용은 아래 링크를 참고하시기 바랍니다.