SQL: comment obtenir tous les caractères distincts dans une colonne, sur toutes les lignes
Est-il une manière élégante dans SQL Server pour trouver tous les caractères distincts dans un seul type varchar(50) de la colonne, à travers toutes les lignes?
Des points de Bonus si on peut le faire sans les curseurs 🙂
Par exemple, dire que mes données contient 3 lignes:
productname
-----------
product1
widget2
nicknack3
La nette d'inventaire de caractères serait "productwigenka123"
source d'informationauteur frankadelic
Vous devez vous connecter pour publier un commentaire.
Étant donné que votre colonne est de type varchar, cela signifie qu'il ne peut stocker les caractères de codes de 0 à 255, quel que soit le code de la page que vous avez. Si vous utilisez uniquement le 32-128 code ASCII de la gamme, alors vous pouvez tout simplement voir si vous avez l'un des personnages 32-128, un par un. La requête suivante n'est qu'en les observant dans sys.objets.nom:
Voici une requête qui retourne chaque caractère comme une ligne séparée, avec le nombre d'occurrences. En supposant que votre table est appelée "Produits"
De combiner tout cela d'une seule ligne, (comme indiqué dans la question), le résultat final
SELECT
àCi-dessus utilise un hack sympa j'ai trouvé iciqui émule le
GROUP_CONCAT
de MySQL.Le premier niveau de récursion est déroulé alors que la requête n'est pas de retour à vide des chaînes dans la production.
L'utiliser (doit travailler sur n'importe quel CTE-capable de SGBDR):
Tester La Requête:
Dernière Question:
Oracle version:
Si vous disposez d'un Nombre ou de Pointage de la table qui contient une liste séquentielle des entiers que vous pouvez faire quelque chose comme:
Si vous utilisez SQL Server 2005 et au-delà, vous pouvez générer votre tableau de Nombres à la volée à l'aide d'un CCE: