Rețineți că macheta *
cu cuvântul cheie LIKE
va avea efectul dorit numai în modul de interogare ANSI-89.
Mulți oameni își asumă în mod greșit caracterul wildcard în Access/Jet este întotdeauna *. Nu asa. Jet are două metacaractere:% în modul de interogare ANSI-92 și * în modul de interogare ANSI-89.
ADO este întotdeauna ANSI-92, iar DAO este întotdeauna ANSI-89, dar interfața de acces poate fi și ea.
Când utilizați cuvântul cheie LIKE într-un obiect de bază de date (adică ceva care va fi persistent în fișierul mdb), ar trebui să vă gândiți la ce vă veți întâmpla dacă cineva a folosit această bază de date utilizând un alt mod de interogare decât cel pe care îl folosesc de obicei? Spuneți că doriți să restricționați numai câmpul de text la caracterele numerice și că ați scris regula validei astfel:
NOT LIKE "*[!0-9]*"
Dacă cineva, fără consimțământ (sau altfel) este conectat la .mdb prin ADO, atunci regula de validare de mai sus le-ar permite să adauge date cu caractere non-numerice și integritatea datelor dvs. ar fi împușcată. Nu e bine.
Este mai bine ca IMO să codeze întotdeauna ambele moduri de interogare ANSI. Poate că acest lucru este cel mai bine realizat prin codificarea explicită a ambelor moduri, de ex.
NOT LIKE "*[!0-9]*" AND NOT LIKE "%[!0-9]%"
Dar, cu mai mult implicat Jet SQL DML/DDL, acest lucru poate deveni foarte greu de realizat în mod concis. De aceea vă recomandăm să utilizați cuvântul cheie ALIKE, care folosește caracterul wildcard al modului de interogare ANSI-92 indiferent de modul de interogare, de ex.
NOT ALIKE "%[!0-9]%"
Notă ALIKE este nedocumentată (și presupun că de aceea postul meu original a fost marcat în jos). Am testat acest lucru în Jet 3.51 (Access97), Jet 4.0 (Access2000 în 2003) și ACE (Access2007) și funcționează bine. Am postat anterior acest lucru în grupurile de știri și am obținut aprobarea pentru accesarea MVP-urilor. În mod normal, m-aș îndepărta de caracteristicile nedocumentate, dar fă o excepție în acest caz, deoarece Jet a fost depreciat de aproape un deceniu, iar echipa de acces care o păstrează în viață nu pare interesată să facă modificări profunde la motoarele (sau reparații de bug-uri! ), care are ca efect de a face motorul Jet un produs foarte stabil.
Pentru mai multe detalii despre modurile de interogare ANSI Jet, consultați Despre modul de interogare SQL ANSI .