배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
액세스 2000, 김규경님의 데이터베이스 기초 다지기 - 14강. 식의 작성 (2) - 연산자 #1, Access 2000
  


14강. 식의 작성 (2) - 연산자 #1

이번 강좌는 식의 작성과 관련하여 두번째 강좌입니다. 연산자의 우선순위, 산술연산에 있어서 Null의 역할, 정수나눗셈(\), 나머지(mod) 연산자, Like 연산자, 개체비교연산자 Is, 문자열 연산에 있어서 +와 & 연산자의 차이점 등 몇 가지 중요한 내용은 꼭 익혀두시길 바랍니다.

연산자 종류

연산자는 다음 표와 같이 크게 4가지 그룹의 나눕니다.
그러나 개념상 문자열 연결 연산자는 문자열을 덧붙여 주는 산술 연산자의 범주에 넣습니다.

연산자 설명  
산술 연산자 수학적 계산을 수행하는 연산자 ^, *, /, \, Mod, +, -
문자열 연결 연산자 문자열을 조합하는 연산자 &, +
비교 연산자 비교를 수행하는 연산자 >, <, >=, <=, <>, Is, Like
논리 연산자 논리적인 작업을 수행하는 연산자 And, Eqv, Imp, Not, Or, Xor

연산자 우선 순위

연산자에는 <우선 순위>라는 것이 있어 하나의 식에 여러 개의 연산자가 사용될 때 미리 정해진 순서에 따라 값을 구하게 됩니다. 우선 순위가 없는 경우(같은 경우)는 왼쪽에서부터 오른쪽으로 계산합니다.

1) 다른 종류 연산자 사이의 우선 순위
산술 연산자 => 비교 연산자 => 논리 연산자 순으로 계산됩니다.
문자열 연결 연산자 => 비교 연산자 => 논리 연산자 순으로 계산됩니다.
문자열 연결 연산자는 문자열을 붙이는(더하는) 연산자로 취급하는 데이터 형식만 다를 뿐 산술연산자와 동일한 개념으로 생각합니다. 따라서 비교연산자 보다 우선 순위가 높습니다.

2) 같은 종류의 연산자에서의 우선 순위
산술 연산자(문자열연결 연산자 포함)와 논리 연산자는 표에 나열된 우선 순위 순서대로 계산됩니다.

비교 연산자 : 모두 우선 순위가 같아서 순서대로 왼쪽에서 오른쪽으로 계산됩니다.

곱셈(*)과 나눗셈(/) 연산자 또는 덧셈(+)과 뺄셈(-) 연산자는 서로 순위가 동일하므로 같이 있는 경우는 왼쪽에서 오른쪽으로 나타나는 순서대로 계산됩니다.

괄호를 사용하면 연산자 우선 순위를 무시하고 괄호 밖의 다른 연산들보다 괄호 안의 연산을 먼저 수행합니다. 그러나 같은 괄호 내에서는 연산자 우선 순위가 유지됩니다.

우선 순위는 중요합니다. 예를 들면, 데이터베이스 창에서 <Ctrl-G>를 눌러 직접실행창을 불러낸 다음 다음과 같이 입력하여 실행을 해보십시오.
   ? "abc" & 1+3   =>  결과) abc4
+ 연산자가 & 연산자보다 우선 순위가 높기 때문에 먼저 계산됩니다.
만약 &가 +와 동일한 순위다면 먼저 “abc1”로 계산이 되고 다시 “abc13”이 될 겁니다.

산술 연산자 우선순위 비교 연산자(모두 동순) 논리 연산자 우선순위

지수(^)

같다(=)
같지 않다(<>)
보다 작다(<)
보다 크다(>)
작거나 같다(<=)
크거나 같다(>=)
Like
Is

Not

부정(–)

And

곱셈, 나눗셈(*, /)

Or

정수 나눗셈(\)

Xor

나머지 연산(Mod)

Eqv

덧셈, 뺄셈(+, –)

Imp

문자열 연결(&)

 


산술 연산자 (^, *, /, \, Mod, +, -)

연산자 설명

^

어떤 수의 지수승을 구합니다.

* 두 수를 곱합니다.
/ 두 수를 나누고 부동 소수점을 반환합니다.
\ 두 수를 나누고 정수 몫을 반환합니다.
Mod 두 수를 나누고 그 나머지를 반환합니다.
+ 두 수를 더합니다.
-

두 수의 차를 구하거나 어떤 수식의 음수를 구합니다.

산술연산자는 많이 접해 보셨을 것입니다.

이중 몇 가지 중요한 사항을 집고 넘어가도록 하겠습니다.

Q:
쿼리에서 1월합계, 2월합계, 3월합계를 더해서 총합계를 만들게 하였습니다. 물론 키값은 공통적인 회계코드로 했고요. 그런데 1월,2월,3월에 값이 있으면 총합이 구해지는데 하나라도 값이 없으면 총합이 나타나지 않는데 방법이 없습니까. 총합계는 식작성기를 이용하여 더한 것입니다. 답변 부탁 드립니다.
A:
예를 들어, A + B + C 와 같은 계산식이라고 하면 덧셈연산자(+)는 전혀 값이 들어 있지 않은 경우(Null)가 있다면 덧셈의 최종 결과는 Null입니다.
따라서 Nz(A,0) + Nz(B,0)+ Nz(C,0) 와 같이 Nz()함수를 사용해야 합니다.

1) 식에 Null이 있으면 Null입니다. <Ctrl-G>를 눌러 직접실행창에서 다음을 실행하여 확인하십시오.
        ? Null+123
        결과> Null
   이러한 결과는 문자열 연산에서도 동일합니다.
        ? Null+”123”
        결과> Null

   추가로 (+) 연산자의 이러한 계산 특성을 이용하면 모듈에서 코드를 좀더 간단하게 처리할 때 유용하게 쓸 수 있습니다.

2) 식에 Empty가 있으면 0으로 취급하여 계산합니다.
        ? Empty+123
        결과> 123

3) \ 연산자는 나눗셈에서 정수부분만 필요한 경우 빠르게 계산해 냅니다.

4) Mod 연산자는 For~Next나 Do~Loop, While~Wend 루프 문에서 일정한 횟수마다 어떤 작업을 반복할 때 간단하고 빠르게 그 시기를 결정하는데 유용하게 쓰입니다.
예를 들어, 다음 예제는 루프를 돌면서 5번째 마다 줄을 긋는 예제의 일부분입니다.
        For k=1 to 100
            If (k Mod 5) = 0 Then
                  줄을 긋는다.
            End IF
        Next

다음 예제는 70개월이 몇 년 몇 개월인가를 계산하는 코드입니다. Mod와 \ 연산자가 적절히 사용되었습니다.

        ret = (70 \ 12) & "년 " & (70 Mod 12) & "개월"

참고] Empty
Variant 변수의 값이 초기화되지 않았다는 것을 지시하는 것입니다. Empty 변수는 숫자 구문에서 0으로, 문자열 구문에서 길이가 0인 문자열("") 로 표현됩니다.

참고] Null
필드에 입력하거나 식과 쿼리에 사용할 수 있는 값으로서 손실된 데이터나 알 수 없는 데이터를 표시합니다.
http://www.officetutor.com/column/kkk-db/kkk_01_6.htm 의 내용을 참고하십시오.

참고] Mod
Mod는 엑셀에서는 함수로 사용되지만 액세스에서는 연산자입니다.
따라서 다음 예제에서 보듯이 엑셀에서는 Mod(10,2) 와 같은 식으로 사용하지만 액세스에서는 ‘10 Mod 2’ 와 같이 사용합니다.

1) Mod 연산자 예제

아래 예제에서는 Mod 연산자를 사용하여 두 숫자를 나눈 나머지 값만 구합니다. 둘 중 한 숫자가 부동 소수점 숫자이면 먼저 그 수를 소수점 첫째 자리에서 반올림하여 정수로 만듭니다.

Dim MyResult
MyResult = 10 Mod 5        ' 0을 반환합니다.
MyResult = 10 Mod 3        ' 1을 반환합니다.
MyResult = 12 Mod 4.3      ' 0을 반환합니다.
MyResult = 12.6 Mod 5      ' 3을 반환합니다.

2) \ 연산자 예제

아래 예제에서는 두 수를 나누고 정수 몫을 반환합니다.

Dim MyValue
MyValue = 11 \ 4       ' 2를 반환합니다.
MyValue = 9 \          ' 3을 반환합니다.
MyValue = 100 \ 3      ' 33을 반환합니다.

비교 연산자 (>, <, >=, <=, <>, Is, Like)

식을 비교합니다.

구문

result = expression1 comparisonoperator expression2
result = object1 Is object2
result = string Like pattern

비교 연산자 구문은 다음과 같은 구성 요소로 되어 있습니다.

구성 요소 설명
result 필수적인 요소. 숫자 변수
expression 필수적인 요소. 식
comparisonoperator 필수적인 요소. 비교 연산자
object 필수적인 요소. 개체 이름
string 필수적인 요소. 문자식
pattern

필수적인 요소. 문자식이나 문자의 범위

참고

아래 표에는 비교 연산자 목록과 resultTrue, False, Null값을 가지는 조건들이 나타나 있습니다.

연산자 True인 경우 False인 경우 Null인 경우
< (보다 작다) expression1 <
expression2
expression1 >= expression2 expression1 or expression2 = Null
<= (작거나 같다) expression1 <= expression2 expression1 >
expression2
expression1 or expression2 = Null
> (보다 크다) expression1 >
expression2
expression1 <= expression2 expression1 or expression2 = Null
>= (크거나 같다) expression1 >= expression2 expression1 <
expression2
expression1 or expression2 = Null
= (같다) expression1 =
expression2
expression1 <> expression2 expression1 or expression2 = Null
<> (같지 않다) expression1 <> expression2 expression1 =
expression2
expression1 or expression2 = Null

 

 

  목차 | 이전 | 다음