PDA

Visualizza la versione completa : [ORACLE] Funzionamento dell'operatore SQL Like


ghini76
23-03-2006, 10:08
Prima di tutto, mi scuso se ho aperto il 3d nel forum sbagliato...

Vorrei chiedere a chi ha più esperienza di me perchè una query SQL su Oracle 8 con all'interno l'operatore LIKE non restituisce gli stessi risultati di tutti gli altri database.
Nelcaso specifico, a parte il case sensitive che tutti sappiamo, c'è una differenza se utilizzo il nomecampo LIKE %barb% ad esempio:

access restituirà: barba, barbetta e barberini
mentre oracle niente. In pratica il LIKE non funziona, mi restituisce qualcosa solo se trova una corrispondenza esatta sulla parola. Quindi se inserisco barba mi darà tutti i rercord che nel campo indicato in una posizione qualsiasi contengono la parola 'barba'.

Perchè? Ho letto una file di documentazione trovato su internet e ovviamente c'è scritto che dovrebbe comportarsi come access invece.
Sapete aiutarmi?

grazie

Shea
23-03-2006, 10:20
Ed invece si comporta così perché cerca dei caratteri prima della lettera "b".

Comunque da ciò che hai scritto presumo che la stringa barb sia contenuta tra gli apicetti.
Se non sbaglio dalla versione 10g la query di Oracle legge anche i caratteri che iniziano con la lettera 'b' anche se c'è la percentuale avanti.

alka
23-03-2006, 10:50
Originariamente inviato da ghini76
Prima di tutto, mi scuso se ho aperto il 3d nel forum sbagliato...
Come si fa ad incorporare le scuse di essersi sbagliati prima di inviare il messaggio?
Basta non inviarlo e fare le dovute correzioni. :master:

Sposto la discussione.

ghini76
23-03-2006, 10:56
Si ovviamente intendevo '%barb%'... una piccola disattenzione...
cmq dicevo che il % mi serve da entrambi i lati perhè il 'barb' potrebbe essere anche l'inizio o il centro di una seconda o terza parola? Esattamente come funziona su Access...

Oracle 10g purtroppo non lo posso installare per ora... devo combattere con l'8i!!! Non c'è uno stratagemma per fregarlo?

Shea
23-03-2006, 11:02
Fai un if e mettti le due condizioni. :)
Soprattutto se stai facendo un function, un package o una procedure.

Loading