에너지 관점 스터디:에관스

컴활 1급 · Access 문자열 함수

컴활 1급 Left Right Mid Len 함수: Access 문자열 추출 예제

두음 암기는 왼오중길입니다. 왼은 Left의 왼쪽 추출, 오는 Right의 오른쪽 추출, 중은 Mid의 시작 위치부터 추출, 길은 Len의 문자 수입니다. 먼저 원하는 결과가 글자인지 숫자인지부터 나누세요.

Access에서 Left·Right·Mid는 문자열을 반환하고, 문자열에 쓴 Len은 문자 수를 반환합니다. Mid의 위치는 왼쪽 첫 글자를 1로 세며 길이를 생략하면 시작 위치부터 끝까지 가져옵니다. 함수 이름이 같아도 Excel 워크시트 함수의 인수 규칙을 그대로 옮기면 안 됩니다.

이 글은 제품 코드 AB-2047을 사용해 인수와 결과를 비교합니다. 공백과 하이픈도 위치에 포함하고 Null은 빈 문자열과 따로 처리합니다. 예제와 셀프 체크는 학습용 자체 제작이며 실제 시험 기출이나 출제 빈도 자료가 아닙니다.

Access Left의 왼쪽, Right의 오른쪽, Mid의 시작 위치부터 추출과 Len의 문자 수를 왼오중길로 구분한 컴활 1급 인포그래픽
왼오중길로 추출 방향과 길이를 구분합니다. Mid의 1부터 세는 위치, 선택 길이와 공백·Null 예외는 본문 예제로 확인하세요.
작성에관스 컴활 1급 학습팀 발행2026년 10월 5일 수정2026년 10월 5일 주제Access 문자열 함수

핵심 포인트

이 글에서 먼저 챙길 것

  • Left·Right는 앞·뒤에서 정한 개수만큼 추출하며 Access에서는 문자 수 인수가 필수입니다.
  • Mid는 시작 위치와 추출 길이를 구분합니다. 위치는 1부터, 길이는 선택 인수입니다.
  • Len을 문자열에 사용하면 문자 수가 나오며 공백·하이픈도 셉니다.
  • InStr는 글자가 아니라 처음 찾은 위치를 반환하며 찾지 못하면 0입니다.
  • Null을 입력한 문자열 함수 결과는 Null입니다. 빈 문자열의 길이 0과 구분하세요.

본문

컴활 1급 공부 기준을 더 구체적으로 보기

Access 기준: 같은 이름의 Excel 함수와 환경을 나누세요

이 글의 기준은 Access 데스크톱 데이터베이스의 식과 VBA입니다. Left(문자열, 개수), Right(문자열, 개수), Mid(문자열, 시작 위치, 선택 길이), Len(문자열)로 구분합니다. Left와 Right는 개수를 명시하고 Mid는 길이를 생략할 수 있습니다.

AB-2047을 앞 두 글자 AB로 바꾸려면 Left, 뒤 네 글자 2047을 가져오려면 Right, 네 번째 위치부터 가져오려면 Mid를 씁니다. 길이가 몇 글자인지 묻는다면 Len입니다. 무엇을 잘라낼지와 몇 글자인지 세는 질문은 결과의 종류부터 다릅니다.

Left: 맨 앞에서 개수만큼, 공백도 포함합니다

Left("AB-2047", 2)의 결과는 문자열 "AB"입니다. Left("AB-2047", 3)은 "AB-"이므로 하이픈도 하나의 문자입니다. 두 번째 인수는 끝 위치가 아니라 왼쪽에서 가져올 문자 수입니다.

Left("AB-2047", 0)은 빈 문자열 ""이며 Left("AB-2047", 20)은 원문 전체입니다. 원문보다 길게 요구한다고 부족한 부분에 공백을 채우지 않습니다. 원문 앞에 공백이 있으면 그 공백부터 추출하므로 데이터가 정리되었다는 전제도 확인하세요.

Right: 오른쪽에서 가져와도 글자의 순서는 유지됩니다

Right("AB-2047", 4)의 결과는 "2047"입니다. 맨 뒤 네 글자를 가져오지만 글자 순서를 뒤집어 "7402"로 만들지는 않습니다. Right는 시작 위치를 지정하는 함수가 아니라 오른쪽 끝에서 개수를 정하는 함수입니다.

두 번째 인수를 2로 바꾸면 "47"입니다. 길이를 0으로 지정하면 "", 원문 길이 이상으로 지정하면 전체 문자열이 나옵니다. 앞 글자를 빼라는 요구와 뒤 글자를 가져오라는 요구가 같아 보일 때는 전체 길이가 고정되어 있는지 확인하세요.

Mid: 시작 위치와 추출 길이를 다른 숫자로 봅니다

AB-2047의 위치는 A=1, B=2, 하이픈=3, 2=4, 0=5, 4=6, 7=7입니다. Mid("AB-2047", 4, 2)는 네 번째 글자부터 두 글자를 가져와 "20"입니다. 세 번째 인수 2는 두 번째 위치까지라는 뜻이 아닙니다.

Mid("AB-2047", 3, 2)의 결과는 "-2"입니다. Mid를 가운데만 가져오는 함수로 외우면 시작 위치의 의미를 놓칩니다. 위치를 1로 지정하면 앞부분도 추출할 수 있으므로 함수 이름보다 지시문의 시작점과 길이를 먼저 읽으세요.

Mid의 길이 생략과 원문 범위 초과를 구분하세요

Access의 Mid("AB-2047", 4)는 "2047"입니다. 세 번째 인수를 생략했으므로 네 번째 위치부터 끝까지 가져옵니다. 같은 결과를 만드는 Mid("AB-2047", 4, 4)와 비교하면 선택 인수의 의미가 보입니다.

Mid("AB-2047", 6, 9)는 남은 문자열 "47"만 반환합니다. 시작 위치 자체가 원문 길이보다 큰 Mid("AB-2047", 8, 2)는 빈 문자열입니다. 남은 글자가 부족한 경우와 시작할 위치가 없는 경우를 구분하며, 부족한 글자를 새로 채우지는 않습니다.

Len: 문자열 길이는 숫자, 공백도 길이에 포함됩니다

Len("AB-2047")은 숫자 7입니다. 글자를 추출한 결과 "7"과 문자 수 7은 자료형이 다릅니다. Len(" AB-2047 ")은 앞뒤 공백을 포함해 9이며 Len("")은 0입니다. 화면에서 잘 안 보이는 공백을 빼고 세면 결과가 어긋납니다.

여기서는 문자열을 Len에 넣는 경우를 다룹니다. VBA에서 숫자형 변수나 사용자 정의 형식에 Len을 쓰는 경우에는 저장 크기 의미가 있으므로 Len은 언제나 문자 수라는 설명은 범위가 지나치게 넓습니다. 문자열 문자 수와 LenB의 바이트 수도 같은 개념으로 외우지 않습니다.

숫자처럼 보여도 추출 결과는 문자열입니다

Right("AB-0005", 4)의 결과는 "0005"입니다. 원문이 문자 데이터라면 앞의 0도 남습니다. 이를 곧바로 숫자 5와 같다고 쓰지 마세요. 계산할 값인지 식별 코드인지에 따라 이후 처리가 달라집니다.

Left·Right·Mid를 계산 필드나 계산 컨트롤에서 사용해도 원본 필드를 자동으로 수정하는 것은 아닙니다. 계산 결과를 보여 주는 식과 저장 데이터를 바꾸는 작업을 구분합니다. 날짜·숫자 표시 형식을 만드는 Format 함수의 역할과도 다릅니다.

Null과 빈 문자열: Len 결과 0을 단정하지 마세요

Left(Null, 2), Right(Null, 2), Mid(Null, 1, 2), Len(Null)의 결과는 Null입니다. 반면 빈 문자열 ""은 길이가 0인 문자 값입니다. 값이 없다는 상황을 설명할 때도 Null과 ""을 같은 입력으로 취급하면 안 됩니다.

업무 조건상 Null을 빈 문자열로 바꾸려면 Len(Nz([상품코드], ""))처럼 대체값을 명시할 수 있습니다. [상품코드]가 Null이면 이 식은 0입니다. 다만 누락된 데이터와 실제 빈 문자열을 구별해야 하는 작업까지 일괄 대체하지 않습니다. Nz·IsNull·IIf 전체 비교는 관련 글에서 확인하세요.

InStr 결합: 위치를 찾은 다음 앞뒤를 추출합니다

InStr(1, "AB-2047", "-")은 하이픈의 위치인 3입니다. 설명을 위해 이 값을 p라고 부르면 Left(원문, p - 1)은 하이픈 앞의 AB, Mid(원문, p + 1)은 뒤의 2047을 가져옵니다. p 자체는 추출한 글자가 아니라 위치입니다.

AB-20-47처럼 구분자가 여러 번 나오면 기본 검색은 첫 하이픈을 찾습니다. 그 위치 다음부터 Mid로 가져오면 "20-47"입니다. 맨 뒤 구분자 이후만 원하는 지시문에는 이 기본 식을 그대로 쓰지 않습니다.

구분자를 찾지 못하면 InStr 결과는 0입니다. p - 1을 그대로 길이로 쓰거나 p + 1을 무조건 원하는 시작점으로 간주하지 말고, 구분자 존재와 Null 여부를 먼저 검사하세요. 이 글의 결합 예제는 문자열에 첫 구분자가 있다는 전제입니다.

쿼리·계산 컨트롤·VBA는 식을 넣는 자리가 다릅니다

쿼리 디자인의 계산 필드 예시는 앞코드: Left([상품코드], 2)입니다. [상품코드]는 필드 값이고 "AB-2047"은 문자 상수입니다. Left("상품코드", 2)라고 쓰면 필드의 데이터가 아니라 문자 그대로의 상품코드에서 앞부분을 가져옵니다.

폼의 계산 텍스트 상자 컨트롤 원본에는 =Mid([상품코드], 4)처럼 식을 지정할 수 있습니다. VBA에서 문자열 변수 codeText를 읽어 결과를 받는 예시는 result = Left(codeText, 2)입니다. 식을 보여 주는 자리와 값을 변수에 대입하는 코드를 구분하세요.

필드 이름을 대괄호로 참조하는 식, 문자열 리터럴의 큰따옴표, 계산 필드의 별칭을 나눠 읽으면 함수는 맞게 골랐는데 엉뚱한 값을 읽는 실수를 찾을 수 있습니다. RecordSource, ControlSource, RowSource의 전체 차이는 별도 가이드 범위입니다.

조건 판별: 추출 함수와 길이 함수의 결과를 비교하세요

앞코드가 AB인 행을 찾는 조건은 추출 결과가 "AB"인지 비교합니다. 전체 코드가 7글자인지 묻는 조건은 Len([상품코드]) = 7로 비교합니다. 앞부분이 같은 코드라도 전체 길이가 다를 수 있으므로 두 조건은 서로 대체할 수 없습니다.

지시문에 첫 두 글자, 마지막 네 글자, 네 번째부터 두 글자, 전체 문자 수라는 표현을 표시해 두세요. 각각 Left·Right·Mid·Len으로 바꾼 뒤 추출 결과는 문자열, 길이는 숫자라는 점을 확인합니다. Null이 허용되는 필드는 처리 기준까지 따로 봅니다.

셀프 체크 7문제: 인수와 결과를 함께 말하세요

다음은 자체 복습 문항입니다. 원문 AB-2047의 문자 위치를 먼저 적고 답을 보기 전에 함수와 결과를 말해 보세요. 숫자처럼 보이는 추출 결과에도 문자열 표시를 남깁니다.

1. Left("AB-2047", 3)의 결과는 무엇인가요? 정답: 문자열 "AB-"입니다. 하이픈도 개수에 포함됩니다.

2. Right("AB-2047", 4)의 결과는 무엇인가요? 정답: 문자열 "2047"입니다. 순서를 뒤집지 않습니다.

3. Mid("AB-2047", 4, 2)의 결과는 무엇인가요? 정답: 문자열 "20"입니다. 4는 시작 위치, 2는 길이입니다.

4. Mid("AB-2047", 6)의 결과는 무엇인가요? 정답: 문자열 "47"입니다. 길이를 생략했으므로 끝까지 추출합니다.

5. InStr(1, "AB2047", "-")의 결과는 무엇인가요? 정답: 숫자 0입니다. 구분자를 찾지 못했다는 뜻입니다.

6. Len(" AB-2047 ")은 얼마인가요? 정답: 숫자 9입니다. 양 끝의 공백도 셉니다.

7. Len(Null)과 Len(Nz(Null, ""))은 같나요? 정답: 아닙니다. 각각 Null과 숫자 0입니다.

마지막 복습: 결과 종류, 위치, 길이, 입력값 순서로

먼저 추출할 문자열인지 문자 수인지 고릅니다. 추출이면 왼쪽·오른쪽·시작 위치를 나누고, Mid의 길이가 지정되었는지 확인합니다. 이어서 공백·구분자·원문 범위를 확인하고, 입력값이 Null일 때 원하는 처리까지 정하세요.

Microsoft Learn의 Left·Right·Mid·Len·InStr와 Microsoft Support의 Access 문자열 함수·Mid·식 구문·Nz 문서를 대조했습니다. 이 글의 결과는 그 규칙에 따른 고정 문자열 예제로 확인했으며 실제 Access 프로그램에서 실행 검증한 것은 아닙니다.

이제 컴활 1급 데이터베이스 단원에서 계산 필드와 계산 컨트롤을 구분해 연습해 보세요. 틀린 항목만 원문, 위치, 길이, 결과 네 칸으로 다시 적으면 됩니다. 전체 프로시저 흐름이 막힐 때는 관련 프로시저 가이드로 이어가세요.

FAQ

자주 묻는 질문

Access Left·Right에서 문자 수를 생략해도 되나요?

이 글의 Access/VBA Left와 Right는 두 번째 length 인수가 필수입니다. 문자 수를 명시하세요. Excel 워크시트 함수의 선택 인수 규칙을 Access에 그대로 적용하지 않습니다.

Access Mid의 길이를 생략하면 어떻게 되나요?

시작 위치부터 문자열 끝까지 반환합니다. Mid("AB-2047", 4)는 "2047"입니다. 시작 위치는 1부터 세며 길이가 원문보다 길면 남은 문자만 반환하고 시작 위치가 원문 밖이면 빈 문자열을 반환합니다.

문자열의 공백과 하이픈도 Len과 Mid 위치에 포함되나요?

이 글의 일반 문자열 예제에서는 공백과 하이픈도 문자 수와 위치에 포함합니다. Len("AB-2047")은 7, 앞뒤 공백이 있는 Len(" AB-2047 ")은 9입니다. Mid의 위치를 셀 때도 같은 기준을 씁니다.

Len(Null)은 0인가요?

아닙니다. Len(Null)은 Null이고 Len("")은 0입니다. Null을 빈 문자열로 대체하는 것이 요구사항에 맞는 경우 Len(Nz([상품코드], ""))처럼 대체값을 지정해 길이를 계산할 수 있습니다.

무료 학습 도구

시간과 점수 감각을 바로 확인하세요

모의고사 전에는 시간 배분을, 채점 후에는 예상 점수를 확인하세요.