Requête de la ruche avec de multiples COMME les opérateurs
Quelle serait la bonne façon d'écrire une requête de la Ruche avec de multiples opérateurs ressemblant comme ceci:
SELECT *
FROM some_table
WHERE
some_col LIKE '%abc%'
OR
some_col LIKE '%xyz%'
OR
some_col LIKE '%pqr%'
OR
... (some more LIKE statements)
J'ai essayé de faire le ci-dessus ainsi que
WHERE some_col LIKE '%abc|pqr|xyz%'
mais ils n'ont pas de résultats. Il fonctionne très bien si j'écris des requêtes distinctes, c'est à dire
WHERE some_col LIKE '%abc%' -> returns results
et
WHERE some_col LIKE '%pqr%' -> also returns results
Il n'y a aucune bonne raison pour la Ruche à l'échec au traitement de plusieurs COMME des expressions combinées par OU. Pourriez-vous élaborer sur le type de table externe (vs géré, partitionné ou pas, le Texte vs RCFile vs Orc vs quoi que ce soit) et la définition de la colonne (une simple Chaîne de caractères? toutes les valeurs Null là?)
WHERE some_col rlike 'abc|pqr|xyz'
œuvres.OriginalL'auteur Shobit | 2015-11-10
Vous devez vous connecter pour publier un commentaire.
De la documentation:
Ainsi, l'utilisation de
OriginalL'auteur mattinbits
Vous pouvez probablement utiliser rlike(regular_expression).
Ouais, essayez avec rlike pour l'expression régulière. Désolé pour l'erreur de frappe. J'ai édité la réponse.
OÙ some_col RLIKE "%abc|pqr|xyz%" a fonctionné pour moi
Ne fonctionne pas pour moi. Je pense qu'il devrait être: OÙ some_col RLIKE 'abc|pqr|xyz
Merci pour le pointeur. Plus tôt, j'étais en train
column RLIKE '*abc*' OR column RLIKE '*pqr*' OR column RLIKE '*xyz*'
, Mais c'était très lourd sur le traitement. Cependant, si j'ai mis comme mentionné int hein solution, il fonctionne très bien. Aucune explication pour ce sera une aide?OriginalL'auteur Shivanand Pawar
Je crois que la question peut être vous avez besoin de regrouper l'instruction like. Votre Exemple fait:
OriginalL'auteur BalaramRaju
Vous pouvez essayer d'utiliser
UNION
si vous devez utiliser plusieurs condition dansLIKE
comme ceci:OriginalL'auteur Rahul Tripathi
Si vous avez besoin de vérifier une liste de sous-chaînes, vous pouvez utiliser une approche différente, par exemple
WHERE InStr(some_col, 'abc') +InStr(some_col, 'pqr') +... >0
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringFunctions
OriginalL'auteur Samson Scharfrichter