10
votes

Vérifiez les caractères à Varchar

Comment puis-je vérifier que Varcharne contient tous les caractères d'un autre Varchar, où la séquence de caractères n'est pas pertinente?

Par exemple: j'ai Varchar @a = 'ABC' et colonne 'Col' dans le tableau 'Table' Où est la ligne avec 'col' = 'cbad' . Je souhaite sélectionner cette ligne, car il contient tous les caractères de @a variable. S'il vous plaît pour votre aide.

J'ai essayé quelque chose comme ça: xxx

mais je ne peux pas mettre cela à condition / p>


1 commentaires

Les guillemets simples sont destinés aux littéraux de cordes / varchar. N'utilisez pas ceux des noms de colonne ou de table.


4 Réponses :


5
votes

Vous pouvez essayer comme ceci: xxx

ou vous pouvez essayer d'utiliser Patindex xxx


1 commentaires

Votre deuxième solution ne vérifie que l'existence de 1 caractère dans le nom du col. Cela donnerait le même résultat que votre première solution avec ou au lieu de et



9
votes

Votre premier besoin de diviser votre variable que vous vérifiez dans des lignes et supprimez les doublons. Pour seulement quelques caractères, vous pouvez simplement utiliser un constructeur de valeurs de table: xxx

qui donne: xxx

Vous pouvez également comparer ceci à votre colonne, et limitez-la uniquement aux colonnes où la colonne contient toutes les lettres (faites dans le ayant clause) xxx

si votre variable peut être plus longue Plus de 10 caractères, vous devrez peut-être adopter une méthode de fractionnement légèrement différente. J'utiliserais toujours des chiffres pour le faire, mais j'utiliserais plutôt La méthode CTE empilée de Itzik Ben-Gan : xxx

Cela vous donnera un ensemble de nombres de 1 à 10 000, et vous pouvez simplement ajouter plus de CTE et de jointures croisées si nécessaire pour étendre le processus. Donc, avec une chaîne plus longue, vous pourriez avoir: xxx


0 commentaires

2
votes

Une autre version: xxx


0 commentaires

1
votes
SELECT * FROM yourTable WHERE PATINDEX('%A%',colname) >= 1 and PATINDEX('%B%',colname) >= 1 AND PATINDEX('%C%',colname) >= 1

0 commentaires