Newsgroup: it.comp.lang.visual-basic
Titolo: MySQL vs Access chi ha ragione e perche'?

Ciao a tutti
Ho un problema con una query che devo far girare sia su MySQL che su Access.
Ho una tabella (TABELLA1) con campo NOME
per esempio
   NOME
| Pippo Pluto |
Siccome posso estrarre quel campo dando in ingresso piu' parole ( e non
necessariamente tuta la parola) avevo pensato a una cosa ad utilizzare
l'operatore LIKE ed ho fatto cosi'
SELECT * FROM TABELLA1 WHERE NOME LIKE '*parola1*' and '*parola2'* and
'*parola3*'
a seconda di quante parole ho in ingresso e la stessa cosa con l'OR logico.
Se scrivo queste query in Access
SELECT * from TABELLA1 where NOME like '*pip*' AND  '*lut*'
oppure
SELECT * from TABELLA1 where NOME like '*pip*' OR  '*lut*'
esse mi ritornano il record.
In MySQL al posto dell'* viene utilizzato il % quindi se scrivo
SELECT * from TABELLA1 where NOME like '%pip%' AND  '%lut%'
dovrebbe restituirmi il record ma invece non lo fa!
Se invece scrivo
SELECT * from TABELLA1 where NOME like '%pip%' OR  '%lut%'
mi ritorna il record.
Allora ho provato a scrivere queste stesse 2 query (con il % invece dell'*)
in Access e queste mi danno lo stesso risultato di MySQL!!!
Allora le domande sono:
1) non ho trovato documentazione su % come "wildcard characters" di Access
ma nonostante cio' in qualche modo funziona...solo che non so bene che tipo
di funzionamento abbia, dal momento che il qualche modo dovra' pur essere
diverso da * se mi produce risultati diversi!
2) Sul sito 
mysql.com
 c'e' scritto a chiare lettere che il % ha le stesse
funzioni dell'* di access ma come mai non funziona allora?
3) Dove sto sbagliando?
Grazie e spero di essere stato chiaro.
Teo

 SELECT * from TABELLA1 where NOME like '%pip%' OR  NOME LIKE '%lut%'
Corretta, rispetto alla tua, vuol dire che NOME deve contenere 'pip' O 'lut'
Usa * per Acces/Jet con DAO, usa % in ogni altro caso (ADO)

 wrote in message
news:bfOG8.1378$se2....@twister1.libero.it...

Scusa ma ancora non riesco a capire la differenza fra % e *  e inoltre la
seconda query che mi hai dato da me non funziona.
Dipendono dal tipo di accesso che faccio?
Inoltre ho il problema di mantenere la compatibilita' per utilizzare il
programma sia con mysql che con access.
Io per adesso stavo provando a fare delle query dal query editor di mysql e
access e ho risultati diversi e non riesco a capire perche', ma soprattutto,
ripeto....non riesco a trovare documentazione sul % in access!
ti giro alcune query con i risultati
SELECT * from TABELLA1 where NOME like '*pip*' AND  NOME LIKE
'*lut*'....funziona
SELECT * from TABELLA1 where NOME like '*pip*' OR  NOME LIKE
'*lut*'....funziona
SELECT * from TABELLA1 where NOME like '%pip%' AND  NOME LIKE '%lut%'....
non funziona
SELECT * from TABELLA1 where NOME like '%pip%' OR  NOME LIKE '%lut%'....non
funziona
SELECT * from TABELLA1 where NOME like '*pip*' AND  NOME LIKE '%lut%'....
funziona
SELECT * from TABELLA1 where NOME like '%pip%' AND  NOME LIKE '*lut*'....
non funziona
 a parte quelle che ti ho gia' dato prima...
io proprio non riesco a capire!
grazie in anticipo se riesci a capirci qualcosa.
ciao
Teo

 programma sia con mysql che con access.
[SNIP]
L'asterisco e' una "licenza poetica" che Access si porta appresso da lunga
data, probabilmente perche' all'utente medio ricorda il famoso "dir *.*" e
risulta piu' intuitivo; il carattere standard SQL e' %
Ora pero' tutto dipende fortemente da cosa usi per collegarti al DB *da
programma*; fare le prove con il query editor di MySql e l'equivalente di
Access e' assolutamente fuorviante, perche' non e' detto che vengano usate
le stesse librerie che usi nei tuoi eseguibili e potresti subire delle
conversioni/interpretazioni della stringa SQL senza che te ne renda conto.
Il modo migliore per fare questo genere di test e' scriverti un piccolo
programma generico per le query che lavori esattamente con gli stessi
criteri che userai a regime, e verificare la sintassi con questo.
In ogni caso, se utilizzi ADO, vai tranquillo con % anche con Access,
altrimenti (con DAO ad esempio) potresti aver bisogno di definire una
variabile a programma, che imposti di volta in volta con il carattere jolly
corretto a seconda della connessione corrente.
Ciao
--
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 criteri che userai a regime, e verificare la sintassi con questo.
ci ero arrivato mezz'ora fa dopo un essermi guadagnato questo pomeriggio un
posto al sicuro all'inferno con tutte le eresie che ho tirato!
grazie comunque...
ciao
teo

 io proprio non riesco a capire!
vuol dire che NOME deve contenere 'pip' EEEEEEEEEEEEEEEEE (non OOOOOO) 'lut'
(se usi ADO, cambia quegli asterischi con % anche in '*lut*', a me era
sfuggito)