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

Comment interroger efficacement les valeurs de colonnes séparées par des virgules pour des valeurs spécifiques dans Oracle 10g ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 11:23:031003parcourir

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

Requêtes pour les valeurs de colonnes séparées par des virgules avec une valeur spécifique

Dans un tableau où une colonne contient des valeurs séparées par des virgules représentant des catégories, il y a est un besoin de récupérer des lignes en fonction de la présence d'une catégorie particulière. Bien que l'utilisation des instructions LIKE puisse suffire, des problèmes d'efficacité et de précision subsistent.

La fonction FIND_IN_SET(), bien que documentée dans la documentation Oracle, n'est pas prise en charge dans la version 10g. Par conséquent, une approche alternative est nécessaire pour interroger efficacement les valeurs des colonnes séparées par des virgules.

Une solution employant LIKE avec des modifications pour tenir compte des correspondances partielles et des virgules est la suivante :

select 
  * 
from
  YourTable 
where 
  ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'

Cependant , cette requête est susceptible de rencontrer des problèmes de performances dus à l'utilisation de LIKE. De plus, il suppose que les valeurs ne contiennent ni espaces ni virgules, ce qui n'est pas toujours le cas.

Pour atténuer ces limitations, une solution plus efficace et plus fiable consiste à restructurer la table en introduisant une table enfant pour les catégories et une table de réticulation pour établir des relations avec la table principale. Cette approche offre de meilleures performances et précision pour interroger des valeurs de colonnes séparées par des virgules avec des valeurs spécifiques.

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