Domanda

Qual è il corretto jolly multi-carattere nel operatore LIKE in Microsoft Jet e quali impostazione influisce esso (se del caso)? Sto sostenendo una vecchia applicazione ASP che gira su Microsoft Jet (su un database di Access) e si utilizza il simbolo% nell'operatore LIKE, ma ho un cliente che apparentemente ha problemi nel suo ambiente, perché il carattere% è inteso come un normale carattere, e presumo che il suo jolly multi-carattere è *. Inoltre, sono quasi sicuro che in passato ho scritto applicazione con query utilizzando * invece di%. Infine, Microsoft Access (come applicazione) funziona anche solo con * e non% (ma non sono sicuro di come sia rilevante).

Ho appena trascorso circa 20 minuti la ricerca in Internet, senza alcun risultato utile, e così ho pensato che sarebbe stato utile chiedere a StackOverflow. Qualcuno potrebbe già lo sanno, ed è meglio mantenere le potenziali risposte su StackOverflow rispetto a qualsiasi altro forum di discussione a caso in ogni caso.

È stato utile?

Soluzione

La risposta diritta è che il comportamento dei caratteri jolly dipende dalla modalità query ANSI dell'interfaccia utilizzata.

ANSI-89 Modalità query ( 'modalità tradizionale') utilizza il carattere *, ANSI-92 Modalità query ( 'modalità di compatibilità SQL Server') utilizza il carattere %. Queste modalità sono specifiche per ACE / Jet e portano solo una vaga somiglianza con i / ISO SQL-89 e SQL-92 standard ANSI.

L'interfaccia ADO (OLE DB) utilizza sempre ANSI-92 modalità query.

L'interfaccia DAO utilizza sempre ANSI-89 modalità query.

Quando si utilizza la modalità di ODBC query può essere esplicitamente specificato tramite il ExtendedAnsiSQL bandiera.

L'interfaccia utente di Microsoft Access, dalla versione 2003 in poi, è possibile utilizzare entrambe le modalità di query, quindi non date per scontato che è uno o l'altro in un dato momento (ad esempio, non utilizzare i caratteri jolly di query-mode-specifici in Validation regole).

sintassi ACE / Jet SQL ha una parola ALIKE, che consente i caratteri ANSI-92 Modalità query (% e _) indipendentemente dalla modalità di query dell'interfaccia, ma ha il leggero svantaggio della parola ALIKE non essendo SQL-92 compatibile (tuttavia ALIKE rimane altamente portatile). Lo svantaggio principale, tuttavia, è che ho capito la parola ALIKE non è supportata ufficialmente (anche se non posso immaginare che scompare o abbia alterato comportamento in qualunque momento presto).

Altri suggerimenti

Se si utilizza DAO, uso asterisco (e il punto interrogativo per singolo segnaposto simbolo). Se si utilizza ADO, utilizzare segno di percentuale (e di sottolineatura).

È possibile trovare questo utile:

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

Nella griglia di struttura di query e con DAO si utilizza *, con ADO e ASP, si utilizza%

Accesso Jet tramite ODBC, non è chiaro per me quello che i caratteri jolly da utilizzare. Mi piacerebbe pensare quelli Jet naturale SQL (* /?), Ma dal momento che non ho mai utilizzare i dati Jet tramite ODBC non posso dire.

In Access, come l'articolo cita Remou dice, in codice, dipende da quello che l'interfaccia di accesso ai dati si utilizza - ADO (che nessuno dovrebbe usare dall'interno di Access), si utilizza% / _, mentre con DAO (Jet strato di interfaccia nativa), si utilizzano i caratteri jolly nativo di Jet (* /?).

C'è un'eccezione nelle versioni successive di Access esecuzione SQL all'interno di Access. Non so se era Access 2002 o 2003 che ha aggiunto, ma al giorno d'oggi, c'è una modalità di compatibilità 92 ANSI SQL che è possibile attivare. Se lo fai, i caratteri jolly diventano% / _ invece di * / ?. Ma essere in grado di scegliere la modalità ANSI vale solo accesso in sé - come onedaywhen ci ha informato, si deve scegliere diverse librerie di interfaccia dati per utilizzare le diverse modalità di SQL, con ADO utilizzando il 92 e DAO e ODBC 89

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top