Maison > base de données > tutoriel mysql > Comment transmettre efficacement des valeurs délimitées par des virgules à une fonction SQL Server IN ?

Comment transmettre efficacement des valeurs délimitées par des virgules à une fonction SQL Server IN ?

Mary-Kate Olsen
Libérer: 2025-01-22 04:25:09
original
534 Les gens l'ont consulté

How to Efficiently Pass Comma-Delimited Values to a SQL Server IN Function?

Passer les valeurs délimitées à la fonction SQL Server IN

Transmettre des valeurs de chaîne séparées par des virgules à la fonction IN dans SQL Server peut être un défi. L'utilisation directe de la fonction IN contenant des chaînes délimitées entraînera des erreurs de conversion.

Option 1 : SQL dynamique

Une solution consiste à utiliser du SQL dynamique, qui vous permet de créer des clauses IN de manière dynamique. Cependant, cette méthode n’est pas recommandée en raison de problèmes de sécurité et de performances.

Option 2 : Opération de chaîne

Une solution plus efficace et plus sûre consiste à manipuler la chaîne délimitée dans un format acceptable pour la fonction IN. Une option consiste à utiliser la fonction CHARINDEX() pour vérifier si chaque valeur de la chaîne délimitée correspond à une valeur de colonne dans le tableau :

<code class="language-sql">DECLARE @Ids varchar(50) = ',1,2,3,5,4,6,7,98,234,'

SELECT * 
FROM sometable
WHERE CHARINDEX(','+CAST(tableid AS VARCHAR(8000))+',', @Ids) > 0</code>
Copier après la connexion

Cette méthode ne nécessite pas de SQL dynamique, équilibrant ainsi les avantages en matière de sécurité et de performances.

Solution simple

Pour ceux qui recherchent une solution moins élégante mais plus pratique, il existe une astuce simple :

<code class="language-sql">DECLARE @Ids varchar(50) = ',1,2,3,5,4,6,7,98,234,'

SELECT * 
FROM sometable
WHERE ',' + CONVERT(VARCHAR, tableid) + ',' LIKE '%,' + @Ids + '%';</code>
Copier après la connexion

Bien que cette méthode ne soit pas aussi efficace que la méthode CHARINDEX(), elle offre une alternative rapide et simple.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal