Recherche de génériques dans postgresql
Dans postgresql, j'ai mangaged pour ajouter générique modèle (*) de la requête à l'aide SIMILAIRE À l'option. Donc ma requête sera,
SELECT * FROM table WHERE columnName SIMILAR TO 'R*'
Cette requête retourne toutes les entités à partir de " R "et pas de "r". Je veux qu'il soit insensible à la casse.
- Je devrais envisager de remplacer toutes les occurrences de
SIMILAR TO
avec une expression régulière (~
) ou l'une des autres opérateurs. J'ai écrit un réponse complète avec des détails sur la dba.SE.
Vous devez vous connecter pour publier un commentaire.
Utilisation
ILIKE
:ou un casse expression régulière:
Les deux sont des extensions de PostgreSQL. Sanjaya a déjà défini les normes conformes approches de filtrage des deux côtés avec
lower(...)
ou à l'aide d'un deux-brancheSIMILAR TO
expression.SIMILAR TO
est à moins de belle et vaut mieux l'éviter. Voir cette première réponse.Vous pourriez écrire:
mais je n'ai pas particulièrement vous recommandons d'utiliser
SIMILAR TO
.^
) faire en sorte que leR
était le premier caractère.LIKE
modèles. Vous devriez vraiment faire cela de toute façon, peu importe ce que vous utilisez, afin d'éviter toute confusion de l'utilisateur lorsqu'il d'entrer du texte seulement pour obtenir une étrange erreur de base de données si leur pattern matching syntaxe n'est pas valide. Sauf si vous allez pour forcer l'utilisateur à entrer valide les expressions régulières POSIX, étendu regex, COMME les patrons, ou quelque chose directement... pas convivial. Alors j'aimerais analyser leur entrée et de produire une nouvelle expression à insérer dans le SQL.essayer
SIMILAR TO
.LIKE
ne pas utiliser la même syntaxe d'expression commeSIMILAR TO
. L'original n'a pas fonctionné dans le test soit, en fait, mais je pense qu'elle devrais-je mal rappelé le peu utiliséeSIMILAR TO
de la syntaxe. Les docs disent: Aussi, comme, COMME, SEMBLABLE À des utilisations _ et % comme des caractères génériques désignant n'importe quel caractère unique et à n'importe quelle chaîne, respectivement de sorte que vous auriez dû écrire'R%|r%'