Pregunta

¿Cuál es el adecuado comodín de caracteres múltiples en el operador LIKE en Microsoft Jet y lo ajuste afecta a él (si lo hay)? Estoy apoyando una aplicación ASP de edad que se ejecuta en Microsoft Jet (en una base de datos Access) y utiliza el símbolo% en el operador LIKE, pero tengo un cliente que aparentemente tiene problemas en su entorno debido a que el carácter% se entiende como un habitual carácter, y supongo que su comodín de varios caracteres es *. Además, estoy casi seguro de que en el pasado he escrito aplicaciones con consultas utilizando * en lugar de%. Por último, Microsoft Access (como una aplicación) también funciona sólo con * no% (pero no estoy seguro de qué tan relevante es).

Me acabo de pasar unos 20 minutos buscando en Internet, sin ningún resultado útil, y así que pensé que sería útil preguntar en stackoverflow. Alguien ya lo sepa, y es mejor mantener las respuestas posibles en StackOverflow que cualquier otro foro de discusión al azar de todos modos.

¿Fue útil?

Solución

La respuesta directa es que el comportamiento de los caracteres comodín depende del modo de consulta ANSI de la interfaz que se utiliza.

modo de consulta ANSI-89 ( 'modo tradicional') utiliza el carácter *, modo de consulta ANSI-92 ( 'modo de compatibilidad de SQL Server') utiliza el carácter %. Estos modos son específicos de ACE / Jet y llevan solamente un parecido con las Normas-92 SQL SQL-89 y ANSI / ISO.

La interfaz ADO (OLE DB) siempre utiliza el modo de consulta ANSI-92.

La interfaz DAO siempre utiliza el modo de consulta ANSI-89.

Al utilizar ODBC el modo de consulta se puede especificar de forma explícita a través de la ExtendedAnsiSQL bandera.

La interfaz de usuario MS Access, de la versión de 2003 en adelante, se puede utilizar ya sea el modo de consulta, por lo que no asuma que es uno o el otro en un momento dado (por ejemplo, no utilice caracteres comodín de consulta-mode-específicas en la validación Reglas).

sintaxis ACE / Jet SQL tiene una palabra clave ALIKE, que permite que los personajes modo de consulta ANSI-92 (% y _), independientemente del modo de consulta de la interfaz, sin embargo tiene la desventaja leve de la palabra clave ALIKE no ser SQL-92 compatible (sin embargo ALIKE sigue siendo altamente portátil). La principal desventaja, sin embargo, es que entiendo la palabra clave ALIKE no está soportado oficialmente (aunque no puedo imaginar que va a desaparecer o han alterado el comportamiento en el corto plazo).

Otros consejos

Si utiliza DAO, el uso asterisco (y signo de interrogación para un solo símbolo de marcador de posición). Si está utilizando ADO, utilice el signo de porcentaje (y subrayado).

Puede resultar útil:

http://msdn.microsoft.com/ en-us / library / aa140104 (office.10) .aspx

En la cuadrícula de diseño y con DAO se utiliza *, con ADO y ASP, se utiliza%

Acceso a Jet a través de ODBC, no es claro para mí lo comodines se debe utilizar. Me asumir los naturales Jet SQL (* /?), Pero como yo nunca uso de datos Jet a través de ODBC que no puedo decir.

Dentro de acceso, como el artículo cita Remou dice, en el código, que depende de qué interfaz de acceso a datos que utiliza - ADO (que nadie debe utilizar desde Access), que utiliza% / _, mientras que con DAO (Chorro de la capa de interfaz nativa), se utiliza comodines nativos de chorro (* /?).

Hay una excepción en las versiones posteriores de Access ejecutar SQL dentro de Access. No sé si era Access 2002 o 2003 que se añadió, pero hoy en día, hay un modo de compatibilidad de 92 ANSI SQL que se puede encender. Si lo hace, los comodines se convierten% / _ en lugar de * / ?. Pero ser capaz de elegir el modo ANSI sólo se aplica dentro de Access sí mismo - como onedaywhen nos ha informado, usted tiene que elegir diferentes bibliotecas de interfaz de datos para utilizar los distintos modos SQL, con ADO utilizando el 92 y DAO y ODBC 89

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top