sql clause like avec beaucoup de valeurs
J'ai 4 colonnes dans ma table. Maintenant, puisque ce n'est plus un nettoyage des données de la tâche I ne suis pas vraiment très particulier au sujet de la performance. Mais encore, je voudrais connaître les options possibles.
Oeil à la requête ci-dessous:
SELECT * FROM dsopi_person_addr_rule ADDR WHERE
addr.src_address_line1 LIKE '%DEP%'
OR addr.src_address_line2 LIKE '%DEP%'
OR addr.src_address_line3 LIKE '%DEP%'
OR addr.src_address_line4 LIKE '%DEP%';
Similaire à la DEP, j'ai 10 matchs de plus. J'ai besoin de répéter à chaque match pour tous les 4 lignes d'adresse. Est-il un meilleur moyen de le faire? Personnellement, je déteste écrire, encore et encore.
**Mise à jour: ci-Dessous est la réponse
SELECT *
FROM dsopi_person_addr_rule ADDR
WHERE regexp_like (UPPER(addr.src_address_line1), 'DEP|DPT$|ABT|DIP.|DIPART|AFDEL|AVDEL|AVD.|DIV|PGRD|PGP|PPG')
Avez-vous regardé la recherche en texte Intégral? MySQL Recherche Plein Texte
Il n'y a pas moyen d'utiliser
Je sais que vous êtes de droite. J'ai été à la recherche à regexp_like clause. Qu'en pensez-vous?
Je serais certainement utiliser
l'OP est l'utilisation d'Oracle pas MySQL.
Il n'y a pas moyen d'utiliser
IN
et LIKE
ensemble, et pour une bonne raison: au point où vous commencez à "besoin" de ces deux opérateurs, vous avez atteint un point où vous devez envisager d'autres options (telles que la recherche plein texte, comme @SidewaysGravity suggéré). Avoir trop de LIKE
opérations dans une requête sera très lente.Je sais que vous êtes de droite. J'ai été à la recherche à regexp_like clause. Qu'en pensez-vous?
Je serais certainement utiliser
REGEXP_LIKE()
avec la concaténation (pas parce que ça va être plus rapide, juste pour rendre les choses plus laconique): WHERE REGEXP_LIKE(addr.src_address_line1 || addr.src_address_line2 || addr.src_address_line3 || addr.src_address_line4, '(DEP|OTH1|OTH2|OTH3)')
l'OP est l'utilisation d'Oracle pas MySQL.
OriginalL'auteur Bytekoder | 2012-10-18
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer le regexp_like fonction
OriginalL'auteur A.B.Cade
Vous pourriez essayer d'écrire une procédure stockée, avec le 'DEP' partie entré en tant que paramètre.
Puis il suffit de concaténer les résultats de tous stockés-proc appels.
OriginalL'auteur Vinod Vishwanath
OriginalL'auteur Jacob Buter