Utilizzo di Oracle 11gR2 Expression Edition. miei dati si presenta come segue
Oracle NOT BETWEEN per il confronto delle stringhe non dà lo stesso risultato di <= and > =
ordertype
---------
ZOCO
ZOSA
ZOST
Stiamo cercando di scoprire i record in cui la colonna non è tra un certo intervallo di valori.
Se corro una query con < = e> = operatori: SELECT * FROM table where ordertype <= 'ZAAA' OR ordertype >= 'ZZZZ';
poi mi 0 risultati. Questa è la risposta giusta.
Tuttavia, se io non uso TRA: SELECT * FROM table where ordertype NOT BETWEEN 'ZAAA' AND 'ZZZZ';
, allora si dà colpi multipli.
La mia comprensione è che entrambe le sintassi dovrebbero dare lo stesso risultato ma non lo sono. Cosa mi manca? Motivo che desidero utilizzare NON TRA, perché molto del nostro codice esistente ha già questa sintassi e non voglio cambiarlo senza capirne i motivi.
Grazie.
Grazie per tutti quelli che hanno pubblicato. Ho eseguito nuovamente le query e dopo aver corretto "OR" nella prima query, i risultati sono gli stessi. Ho ancora la domanda sul perché l'ordinamento dei caratteri Oracle non lo riconosce come previsto, ma la mia domanda relativa alla differenza tra NOT BETWEEN e <> era un falso allarme. Mi scuso per la confusione.
Le mie scuse per l'errore nella mia domanda sopra. La prima query che intendevo scrivere era ordertype <= 'ZAAA' OR ordertype> = 'ZZZZ' – user3208146
Grazie per tutti quelli che hanno pubblicato. Ho eseguito nuovamente le query e dopo aver corretto "OR" nella prima query, i risultati sono gli stessi. Ho ancora la domanda sul perché l'ordinamento dei caratteri Oracle non lo riconosce come previsto, ma la mia domanda che riguarda la differenza tra NOT BETWEEN e <> era un falso allarme. – user3208146
Ora, dopo aver modificato 'and' in un' o', sono abbastanza convinto che entrambe le dichiarazioni restituiscano effettivamente gli stessi record. Potresti eseguire http://sqlfiddle.com/#!4/d8ac4/1 e comunicarci quali documenti vengono restituiti. Inoltre, fai un 'select dump (ordertype) dalla tabella dove ordertype NON TRA 'ZAAA' E 'ZZZZ';' e pubblica il risultato. –