Au cours de mon travail avec les bases de données, j'ai remarqué que j'écrivais des chaînes de requête et que dans ces chaînes, je devais mettre plusieurs restrictions dans la clause where d'une liste, d'un tableau ou d'une collection. Cela devrait ressembler à ceci :
select * from customer
where customer.id in (34, 26, ..., 2);
Vous pouvez simplifier cette question en la ramenant à une collection de chaînes de caractères et en voulant créer une liste séparée par des virgules de ces chaînes en une seule chaîne.
L'approche que j'ai utilisée jusqu'à présent est à peu près la même :
String result = "";
boolean first = true;
for(String string : collectionOfStrings) {
if(first) {
result+=string;
first=false;
} else {
result+=","+string;
}
}
Mais comme vous pouvez le constater, c'est très laid. Vous ne pouvez pas voir ce qui se passe au premier coup d'œil, en particulier lorsque les chaînes construites (comme toute requête SQL) deviennent compliquées.
Quelle est votre méthode (plus) élégante ?
0 votes
On peut supposer que le code SQL présenté ci-dessus devrait ressembler à ceci : select * from customer where customer.id in (34, 26, 2) ;
0 votes
Il y a une partie délicate, lorsque les éléments de la liste (chaînes) contiennent eux-mêmes des virgules ou des guillemets doubles et qu'ils doivent être échappés avec des guillemets. Si je n'ai rien oublié, les exemples ci-dessus n'en tiennent pas compte et je déteste l'idée de parcourir en boucle tous les textes et de rechercher les virgules. Pensez-vous qu'il y ait une meilleure façon de résoudre ce problème ?
0 votes
Vérifiez cette réponse... stackoverflow.com/a/15815631/728610
0 votes
Avez-vous déjà vérifié stackoverflow.com/questions/10850753/ ?
0 votes
Ceci devrait suffire. stackoverflow.com/a/15815631/3157062