2 votes

Comment puis-je regrouper les enregistrements mal orthographiés en SQL ?

Je cherche des conseils sur la façon d'aborder le problème des différentes orthographes pour le même nom. J'ai une base de données SQL Server avec des postes de travail, et il y a certains noms qui sont les mêmes mais l'orthographe est différente. En utilisant distinct, j'obtiens les résultats suivants, mais tous les postes sont identiques.

Par exemple :

  • Ancien employé - SBM (Student Brand Manager)
  • Ancien employé - SBM
  • Ancien employé - Responsable de la marque pour les étudiants
  • Ancien employé - Student Brand Manager (SBM)

Comme ci-dessus beaucoup d'enregistrements sont là, parfois c'est un 's' supplémentaire, d'autres fois c'est un espace supplémentaire.

Note Ces postes sont affichés dans une liste déroulante. Comment les regrouper et les afficher en cliquant sur un nom ? Je veux obtenir tous les enregistrements sans perdre de données.

4voto

Gordon Linoff Points 213350

C'est un problème difficile.

Je vous recommande de commencer par une liste de tous les postes distincts :

select distinct job_position
from t;

Ensuite, chargez-les dans une feuille de calcul et inscrivez manuellement le nom officiel. Chargez ensuite ce fichier dans la base de données et utilisez-le lors de la mise à jour et de l'insertion du poste - si un poste ne figure pas dans la table, il est rejeté.

Vous pouvez ensuite vous joindre à la table pour obtenir la version officielle.

1voto

Demo Points 319

Ce n'est pas que ce soit recommandé, mais vous devriez également être en mesure de regrouper par un résultat de valeurs modifiées, par exemple :

group by (CASE WHEN name like 'SBM%' or name like 'Student Brand Manager%' THEN 'SBM' END)

Le même décodeur doit également apparaître dans l'instruction Select (si vous voulez voir le nom).

1voto

Ames Points 363

J'ai l'habitude de créer une table de correspondance pour résoudre définitivement ce problème. Une solution rapide que j'utilise habituellement pour les requêtes est d'écrire une vue comme ci-dessous :

Select 
Case when [Job Position] like '%Former Employee - SBM%' OR [Job Position] like '%Former Employee - Student Brand Manager%'
THEN 'SBM'
ELSE [Job Position] END as 'Job Position'
,[Field 2], [Field 3], ...

FROM TABLENAME

OU

Select 
Case when [Job Position] in ('Former Employee - SBM (Student Brand Manager)','Former Employee - SBM','Former Employee - Student Brand Manager','Former Employee - Student Brand Manager (SBM)')
THEN 'SBM'
ELSE [Job Position] END as 'Job Position'
,[Field 2], [Field 3], ...

FROM TABLENAME

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X