2009-04-05 2 views
12

Microsoft Jet의 LIKE 연산자에서 적절한 다중 문자 와일드 카드는 무엇이고 어떤 설정이 해당 설정에 영향을 줍니까? Microsoft Jet (Access 데이터베이스)에서 실행되는 이전 ASP 응용 프로그램을 지원하고 LIKE 연산자에서 % 기호를 사용하지만 % 문자가 일반 문자로 인식되므로 분명히 자신의 환경에서 문제가있는 고객이 있습니다 캐릭터라고 생각하고 그의 복수 문자 와일드 카드가 *라고 가정합니다. 또한, 나는 과거에 % 대신 *를 사용하는 쿼리로 애플리케이션을 작성했다고 거의 확신합니다. 마지막으로, Microsoft Access (응용 프로그램)도 * 및 %로만 작동합니다 (그러나 어떻게 관련이 있는지 잘 모르겠습니다).Microsoft Jet 와일드 카드 : 별표 또는 백분율 기호?

방금 ​​유용한 결과없이 인터넷을 검색하는 데 약 20 분이 소요되었으므로 stackoverflow에서 유용하다고 생각했습니다. 누군가는 이미 그것을 알고 있을지도 모르며 어쨌든 다른 임의의 토론 포럼보다 잠재적 인 해답을 stackoverflow에 유지하는 것이 좋습니다.

답변

14

와일드 카드 문자의 동작은 사용중인 인터페이스의 ANSI 쿼리 모드에 따라 달라집니다.

ANSI-89 쿼리 모드 ('traditional mode')는 * 문자를 사용하고 ANSI-92 쿼리 모드 ('SQL Server 호환 모드')는 % 문자를 사용합니다. 이러한 모드는 ACE/Jet에만 해당되며 ANSI/ISO SQL-89 및 SQL-92 표준과 유사합니다.

ADO 인터페이스 (OLE DB)는 항상 ANSI-92 쿼리 모드를 사용합니다.

DAO 인터페이스는 항상 ANSI-89 쿼리 모드를 사용합니다.

ODBC를 사용할 때 쿼리 모드는 ExtendedAnsiSQL 플래그를 통해 명시 적으로 지정할 수 있습니다.

MS Access 사용자 인터페이스는 2003 버전 이후부터 쿼리 모드를 사용할 수 있으므로 주어진 시간에 둘 중 하나라고 가정하지 마십시오 (예 : 쿼리 모드 별 와일드 카드 문자를 유효성 검사 규칙).

ACE/제트 SQL 구문은 그러나 ALIKE 키워드가 없다는 약간의 단점이있다는 ANSI-92 쿼리 모드 문자 (%_)에 관계없이 인터페이스의 쿼리 모드 수있는 ALIKE 키워드를 가지고 SQL- 92 호환 (그러나 ALIKE은 휴대 성이 높습니다). 그러나 가장 큰 단점은 ALIKE 키워드가 공식적으로 지원되지 않는다는 것입니다 (사라지거나 곧 변경 될 것이라고 상상할 수는 없지만).

4

DAO를 사용하는 경우 별표 (및 단일 기호 자리 표시 자에 물음표)를 사용하십시오. ADO를 사용하는 경우 백분율 기호 (및 밑줄)를 사용하십시오.

2

를 사용 * 사용, 그렇지 않아 어떤 와일드 카드를 사용해야하는지 명확히 말해주십시오. 나는 자연적인 Jet SQL을 가정 할 것이지만 (* /?), ODBC를 통해 Jet 데이터를 사용하지 않기 때문에 나는 말할 수 없다.

Remou cites라는 기사에서 코드에서 사용하는 데이터 액세스 인터페이스는 ADO (Access 내에서 아무도 사용해야하지 않음), DAO (% Jet의 네이티브 인터페이스 레이어), Jet의 기본 와일드 카드 (* /?)를 사용합니다.

Access 내에서 SQL을 실행하는 이후 버전의 Access에서는 예외가 있습니다. 나는 그것을 추가 한 Access 2002 또는 2003인지 여부를 모르지만 요즘에는 사용자가 설정할 수있는 ANSI SQL 92 호환 모드가 있습니다. 그렇게하면 와일드 카드는 * /? 대신 %/_가됩니다. 그러나 ANSI 모드를 선택할 수 있다는 것은 Access 자체에만 적용됩니다. 우리는 92와 DAO 및 ODBC 89를 사용하는 ADO를 사용하여 다른 데이터 인터페이스 라이브러리를 선택해야합니다.

+0

ACE/Jet에는 ANSI-89 쿼리 모드 용 네이티브 집합과 ANSI-92 쿼리 모드 용 네이티브 집합이있는 * 와일드 카드 두 세트가 있습니다. 이러한 쿼리 모드는 엔진에 고유하므로 "Access 자체 내에서만"적용되지 않습니다. – onedaywhen

+0

Jet에 대해 SQL을 실행할 때 ANSI 모드를 어떻게 설정합니까? 나는 Access 자체를 통하지 않고 Jet를 결코 사용하지 않기 때문에 정말로 모른다. –

+0

답변 : 답변을 반영하여 내 게시물을 수정하겠습니다. –