Maison >base de données >tutoriel mysql >Comment interroger une colonne séparée par des virgules pour des valeurs spécifiques dans Oracle 10g ?

Comment interroger une colonne séparée par des virgules pour des valeurs spécifiques dans Oracle 10g ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-29 07:28:02988parcourir

How to Query a Comma-Separated Column for Specific Values in Oracle 10g?

Interrogation d'une colonne séparée par des virgules pour des valeurs spécifiques

Vous rencontrez un défi de base de données courant : interroger une table avec une colonne séparée par des virgules pour une valeur de catégorie spécifique. Bien que les instructions LIKE puissent apporter une solution, elles peuvent être à la fois verbeuses et inefficaces.

Pour résoudre ce problème, une solution potentielle implique la fonction FIND_IN_SET(). Cependant, dans Oracle 10g, cette fonction n'est pas disponible, ce qui entraîne une erreur « identifiant invalide ».

Une alternative plus robuste aux instructions LIKE est disponible :

<code class="sql">select 
  * 
from
  YourTable 
where 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'</code>

Cette requête recherche correspondances exactes de la valeur de recherche dans la colonne séparée par des virgules. Cependant, il est crucial d'inclure des virgules avant et après la valeur recherchée pour tenir compte des valeurs au début ou à la fin de la chaîne.

Bien qu'efficace, cette requête peut rencontrer des limitations de performances en raison de la lenteur inhérente de LIKE, en particulier lorsque un caractère générique de début est présent.

En fin de compte, la solution idéale pour gérer les colonnes séparées par des virgules est d'envisager la restructuration des données. Cela pourrait impliquer la création d'une table enfant pour les catégories ou même d'une table distincte pour les catégories liées à la table principale via un mécanisme de liaison croisée. En normalisant les données de cette manière, les requêtes futures peuvent devenir plus efficaces et précises.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn