Il modo classico per interrogare un database SQL caso insensibile da Java è la seguente:Come ordinare i risultati senza distinzione tra maiuscole e minuscole in Oracle SQL?
String name = ...; // get the user's input (case is unknown)
String sql = "select * from Person where lower(name) = ?";
Object jdbcBindVariable = name.toLowerCase();
// ... using JDBC, bind that variable and run the SQL query
Il problema è che inferiore dell'involucro è un'operazione specifica locale. Ad esempio, nella parte inferiore della lettera "I
" si ottengono risultati diversi in inglese e turco. Nel codice di cui sopra, ci sono due operazioni inferiore involucro: metodo
- The String # toLowerCase()
- Più basso() funzione di database
Come posso fare in modo che Java e la il database utilizza le stesse impostazioni internazionali e quindi esegue un confronto valido?
Sono consapevole che la classe String ha un metodo toLowerCase (Locale), ma come faccio a sapere quale lingua locale sta utilizzando il database? Posso verificarlo a livello di codice o devo codificare a caldo il locale con quello con cui penso sia configurato il database (in questo caso Oracle 10g)?
E ' così semplice eppure non ci ho mai pensato. –