문제:
‘사번’ 필드에는 공백문자가 입력되지 않도록 유효성 검사 규칙을 설정하시오. (Instr 함수 이용)
정답은
InStr([사번]," ")=0
으로 되어 있는데요.
문제에서 “공백문자가 입력되지 않도록”이라고 했을 때, 왜 IsNull이 아니라 InStr([사번]," ")=0을 사용하는 것인지 궁금합니다.
또한 문제의 어떤 표현을 보고 IsNull, =0 등을 구분해서 사용해야 하는지도 쉽게 설명해 주시면 감사하겠습니다.
안녕하세요.
여기서 헷갈리는 핵심은 “공백문자”와 “값이 비어 있음(Null)”은 전혀 다른 상태라는 점입니다.
IsNull은 값 자체가 입력되지 않았는지 검사합니다. 예를 들어 사번 필드가 아예 비어 있다면 IsNull([사번])이 True가 됩니다.
반면 문제의 “공백문자가 입력되지 않도록”에서 공백문자는 키보드의 스페이스바로 입력하는 " "라는 실제 문자를 뜻합니다.
예를 들어 다음은 서로 다릅니다.
ABC123 → 공백 없음
ABC 123 → 중간에 공백문자 있음
ABC123 → 앞에 공백문자 있음
ABC123 → 값이 있음
(아무것도 입력 안 함) → Null따라서 문제에서는 사번 문자열의 어느 위치든 " "가 들어 있는지를 찾아야 하므로 InStr을 사용합니다.
InStr([사번]," ")InStr은 찾는 문자의 위치를 숫자로 반환합니다.
사번 InStr([사번]," ")
ABC123 0 ← 공백 없음
ABC 123 4 ← 네 번째 위치가 공백
ABC123 1 ← 첫 번째 위치가 공백문제에서는 공백문자가 없어야 유효한 데이터이므로 반환값이 0이어야 합니다.
InStr([사번]," ")=0그래서 이것이 정답입니다.
시험에서는 문제의 표현을 다음처럼 구분하면 쉽습니다.
| 문제 표현 | 생각할 내용 | 대표적인 식 |
|---|---|---|
| 공백문자가 없도록 | " "라는 문자를 찾음 | InStr([필드]," ")=0 |
| 공백문자가 포함되도록 | " "가 존재하는지 찾음 | InStr([필드]," ")>0 |
| 값이 반드시 입력되도록 | Null인지 검사 | Is Not Null |
| 값이 입력되지 않은 경우 | Null인지 검사 | Is Null |
| 특정 문자가 없도록 | 그 문자의 위치가 0인지 검사 | InStr([필드],"문자")=0 |
특히 =0은 “값이 0이어야 한다”는 뜻으로 외우면 안 됩니다. 여기서는 InStr 함수가 찾지 못했을 때 0을 반환하기 때문에 =0을 붙인 것입니다.
즉 문제를 읽을 때 이렇게 번역해 보시면 됩니다.
“공백문자” → 문자
" "를 찾는 문제 →InStr
“입력되지 않음/값이 없음” → Null을 검사하는 문제 →IsNull또는Is Null
따라서 ABC 123은 Null이 아닙니다. 값은 분명히 존재하지만 그 안에 공백문자가 포함된 것이므로 IsNull로는 이 문제를 해결할 수 없습니다.
즐거운 하루 되세요.
-
관리자2026-09-10 09:23:54
안녕하세요.
여기서 헷갈리는 핵심은 “공백문자”와 “값이 비어 있음(Null)”은 전혀 다른 상태라는 점입니다.
IsNull은 값 자체가 입력되지 않았는지 검사합니다. 예를 들어 사번 필드가 아예 비어 있다면IsNull([사번])이 True가 됩니다.반면 문제의 “공백문자가 입력되지 않도록”에서 공백문자는 키보드의 스페이스바로 입력하는
" "라는 실제 문자를 뜻합니다.예를 들어 다음은 서로 다릅니다.
ABC123 → 공백 없음 ABC 123 → 중간에 공백문자 있음 ABC123 → 앞에 공백문자 있음 ABC123 → 값이 있음 (아무것도 입력 안 함) → Null따라서 문제에서는 사번 문자열의 어느 위치든
" "가 들어 있는지를 찾아야 하므로InStr을 사용합니다.InStr([사번]," ")InStr은 찾는 문자의 위치를 숫자로 반환합니다.사번 InStr([사번]," ") ABC123 0 ← 공백 없음 ABC 123 4 ← 네 번째 위치가 공백 ABC123 1 ← 첫 번째 위치가 공백문제에서는 공백문자가 없어야 유효한 데이터이므로 반환값이
0이어야 합니다.InStr([사번]," ")=0그래서 이것이 정답입니다.
시험에서는 문제의 표현을 다음처럼 구분하면 쉽습니다.
문제 표현 생각할 내용 대표적인 식 공백문자가 없도록 " "라는 문자를 찾음InStr([필드]," ")=0공백문자가 포함되도록 " "가 존재하는지 찾음InStr([필드]," ")>0값이 반드시 입력되도록 Null인지 검사 Is Not Null값이 입력되지 않은 경우 Null인지 검사 Is Null특정 문자가 없도록 그 문자의 위치가 0인지 검사 InStr([필드],"문자")=0특히
=0은 “값이 0이어야 한다”는 뜻으로 외우면 안 됩니다. 여기서는InStr함수가 찾지 못했을 때 0을 반환하기 때문에=0을 붙인 것입니다.즉 문제를 읽을 때 이렇게 번역해 보시면 됩니다.
“공백문자” → 문자
" "를 찾는 문제 →InStr
“입력되지 않음/값이 없음” → Null을 검사하는 문제 →IsNull또는Is Null따라서
ABC 123은 Null이 아닙니다. 값은 분명히 존재하지만 그 안에 공백문자가 포함된 것이므로IsNull로는 이 문제를 해결할 수 없습니다.즐거운 하루 되세요.