0
votes

Compter combien de fois un mot existe dans la colonne

J'ai une table 1: xxx pré>

alors, j'ai une chaîne 'abc ~ xyz ~ 123'. J'ai besoin de diviser cette chaîne en chaque mot à l'aide de SQL: p> xxx pré>

Le retour est TABLE2 P>

ABC|3
XYZ|2
123|1


2 commentaires

Avez-vous envisagé d'utiliser la fonction nommée apte, compte ?


Vous devez sérieusement envisager de vous éloigner de la conservation de plusieurs valeurs distinctes de plusieurs dans un seul enregistrement. normaliser vos données.


3 Réponses :


0
votes

Outre les suggestions telles que dans le commentaire, vous pouvez utiliser Comptez () fonction comme ci-dessous. Mais le stockage de ce format vous donnera des difficultés pour l'extraction ainsi que dans la jointure avec les autres tables.

CREATE TABLE table1(
  TableValue varchar(max)
);

INSERT INTO table1 (TableValue) values ( 'XYZ');
INSERT INTO table1 ( TableValue) values ( 'ABC');
INSERT INTO table1 ( TableValue) values ( 'XYZ~ABC~AAA');
INSERT INTO table1 ( TableValue) values ( '123~ABC');

SELECT b.value
    ,Count(*)
FROM (
    SELECT VALUE
    FROM STRING_SPLIT('ABC~XYZ~123', '~')
    ) a
INNER JOIN (
    SELECT *
    FROM table1
    CROSS APPLY STRING_SPLIT(TableValue, '~')
    ) b ON a.Value = b.Value
GROUP BY b.Value


4 commentaires

Ce n'est pas ce que je veux dire. Parce que j'ai une table et une chaîne. Ce que je dois faire est de: 1. Split la chaîne en mot séparé 2. Comptez combien de fois chaque mot existait dans la table fournie.


@Hungnguyen Si vous avez une idée claire sur les jointures et comptez, vous pouvez le faire facilement. J'ai donné une idée de résoudre vos problèmes.


J'ai mis à jour mon article pour le rendre plus clair. S'il vous plaît se référer ci-dessus


@Hungnguyen Veuillez vérifier la version modifiée de la réponse et vous demander de mettre à jour la syntaxe de la table Créer une version appropriée dans votre question.



1
votes

Si je comprends votre cas correctement, l'instruction suivante peut aider:

Texte et tableau: P>

-----------
Word  Count
-----------
ABC   3
XYZ   2
123   1


1 commentaires

@Hungnguyen Vous devez accepter la meilleure solution de travail qui vous convient, car il a également aidé les autres à trouver la réponse rapidement.



0
votes

Configuration xxx

Calcul: xxx

résultat xxx

Exemple en direct : https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=15b95efcf69ea98fafbb7dda1c624551 < / p>


0 commentaires