Je m'excuse si cette question a été posée, j'ai du mal à la mettre en mots.Rechercher le texte dans un champ contenu dans un autre champ Oracle SQL
J'ai été invité à filtrer des lignes dans une requête où le texte d'un champ est contenu dans un autre champ. Un exemple serait sans doute expliquer mieux:
Column_1 Column_2
Low Static Static
Static Static
Static Clear
Static
Very Low Freq Freq
Le résultat de la requête doit retourner uniquement les lignes 3 et 4, puisque les lignes 1, 2 et 5 contiennent des chaînes qui sont similaires. En ce moment, je la condition suivante:
WHERE
((Column_2 NOT LIKE '%' || Column_1 || '%')
OR (Column_1 NOT LIKE '%' || Column_2 || '%' OR Column_1 IS NULL))
Cependant, il est de retour les lignes 1, 3, 4, et 5 quand je veux revenir que les lignes 3 et 4. Ces données sont seulement par exemple, mon jeu de données réel contient De nombreuses chaînes de texte différentes dans les colonnes 1 et 2, je ne peux donc pas écrire des instructions de cas spécifiques pour exclure certaines instances où les colonnes sont similaires.
Peut-être que ce n'est tout simplement pas possible, puisque je ne peux pas définir une chaîne comme quelque chose contenu dans 2 espaces, tout en prenant en considération des cas où il n'y a pas d'espaces?
Merci
changer la première ou à une et 'WHERE (column_2 pas comme « % » || column_1 || « % » et Colonne_1 pas comme « % » || column_2 || '%') OU Colonne_1 est nulle OU colonne_2 est nulle' – xQbert
Le titre de la question dit le contraire de la dernière partie de votre question où vous dites "Je ne veux que retourner les lignes 3 et 4", donc je suis confus . – codenheim
Merci d'avoir trouvé cela. Je l'ai changé en ET qui a corrigé quelques cas, mais je reçois toujours des résultats incohérents, par exemple. Colonne 1 = 'Bruit sonore droit' et Colonne 2 = 'Bruit sonore clair' (donc je voudrais exclure cette rangée). – GrubBumble