본문 바로가기

프로그래밍

MSAccess(MDB) LIKE검색 오류

MS-Access DB인 .MDB파일을 로컬 DB LIKE검색시 "메모리 부족" 오류 발생의 건    


MS Access를 이용하여 데이터베이스를 관리할 경우에 SQL문으로 테이블 질의시 LIKE '%keyword%' 검색을 이용할 때

간혹 잘 되던 검색이 안되는 경우가 있는데 이런 경우에 대한 분석 및 처리 방안입니다.



증상 : MDB파일에 SQL 쿼리를 이용할 때 쿼리문에 LIKE 조건문에 의해 검색을 하면 "메모리 부족" 오류 발생


원인

    - MSAccess DB의 내부 버그로 문자열 / 메모 필드내에 일본어가 들어가 있는 경우 발생하며 일본어 중에 가타카나에서만 발생하고 가타카나중 탁음 문자가 하나라도 있으면 전체 테이블에 대한 쿼리가 실패 함

    - 이 문제는 구글링 결과 MS Access자체의 오류로 알려진 버그임


처리

    - 일반적을 한글이 포함된 테이블에 LIKE 검색을 하면 정상 검색이 안되는 경우가 있는데 이때 검색 전에 국가별설정을 "영어(409)로 지정한 후 검색을 하면 대부분 잘 됨

    - 그러나 일본어 가타카나중 탁음이 한자라도 있을 경우에는 더이상 LIKE 검색이 진행되지 않음

    - 오류를 발생시키는 가타카나 문자 셋

ガギグゲゴ     ザジズゼゾ    ダヂヅデド    バビブベボ    パピプペポ

    - 대체 문자셋(아쉬운대로 히라카나로 대체)

がぎぐげご    ざじずぜぞ     だぢづでど    ばびぶべぼ    ぱぴぷぺぽ


    - MDB에 레코드를 삽입하기 전에 문자열에서 상기 일본어 문자를 대체 문자로 변경하거나 지우고 입력해야 함(아쉬운대로)

   

 * 더 좋은 처리 방안이 있으면 댓글 남겨 주세요...