2014-10-30 21 views
5

Sto cercando un consiglio su come affrontare il problema dell'ortografia diversa con lo stesso nome. Ho un database SQL Server con nomi di società e ci sono alcune aziende uguali ma l'ortografia è diversa.SQL Server: correzione nomi commerciali errati

Ad esempio:

Building Supplies pty 
Buidings Supplies pty 
Building Supplied l/d 

Il problema è che non vi sono chiare consistenze nella variazione. A volte è un extra, altre volte è uno spazio in più.

Purtroppo non ho una lista di ricerca, quindi non posso usare Fuzzy Lookup. Ho bisogno di creare la lista pulita.

Esiste un metodo che le persone utilizzano per risolvere questo problema?

P.S Ho provato a cercare per questo problema, ma non riesco a trovare un filo simile

Grazie

+1

Abbiamo avuto questi problemi per anni - abbiamo provato a educare i nostri utenti, aggiungendo campi di completamento automatico quando si aggiungevano nuove società ... Ma gli utenti riescono ancora a ottenere duplicati. Ora eseguiamo una ricerca manuale una volta ogni tanto per pulire fuori i duplicati! :( – navigator

+2

Inoltre, non si può mai essere sicuri se qualcosa è un duplicato o meno.I nomi delle imprese sono * molto * diversi e nuove filiali con un nome simile continuano a comparire ogni giorno, per ragioni fiscali o qualsiasi altra cosa. Non si può mai essere sicuri di "correggere" qualcosa che non era veramente sbagliato in primo luogo. Essere molto attenti. – Tomalak

risposta

3

È possibile utilizzare SOUNDEX()DIFFERENCE() per questo scopo.

DECLARE @SampleData TABLE(ID INT, BLD VARCHAR(50), SUP VARCHAR(50)) 

INSERT INTO @SampleData 
SELECT 1, 'Building','Supplies' 
UNION 
SELECT 2, 'Buidings','Supplies' 
UNION 
SELECT 3, 'Biulding','Supplied' 
UNION 
SELECT 4, 'Road','Contractor' 
UNION 
SELECT 5, 'Raod','Consractor' 
UNION 
SELECT 6, 'Highway','Supplies' 

SELECT *, DIFFERENCE('Building', BLD) AS DIF 
FROM @SampleData 
WHERE DIFFERENCE('Building', BLD) >= 3 

Risultato

ID BLD   SUP  DIF 
1 Building Supplies 4 
2 Buidings Supplies 3 
3 Biulding Supplied 4 

Se questo serve il vostro scopo è possibile scrivere una query di aggiornamento per aggiornare record selezionato di conseguenza.

0

Oltre all'opzione SOUNDEX() DIFFERENCE() (che è molto buona btw!), È possibile esaminare di più il SSIS.

della raccolta dei dati è in inglese e non esclusivamente nomi di persone c'è molto si può fare con questi componenti:

estrazione Term

Ricerca termini

Fuzzy raggruppamento

Fuzzy look

Il flusso principale sarebbe una struttura a più livelli in cui si cerca di trovare duplicati sempre più s certi modi. Invece di applicarli automaticamente, si inviano tutti i nomi e le chiavi necessari per applicare le modifiche a un'area di gestione temporanea in cui possono essere esaminate e, se necessario, applicate.

Se andate a questo proposito molto intelligente è possibile utilizzare i dati esaminati come repository per rendere il pacchetto "imparare", per esempio iu è quasi mai valido in inglese quindi se questo è trovato e cambiarlo con ui fa una valida parola inglese si potrebbe voler iniziare ad applicare quelle automaticamente ad un certo punto.

Un'altra cosa da considerare è mantenere un elenco di tutti i nomi convalidati e usarlo per verificare la presenza di duplicati di tali nomi e per evitare ricorsione/carico non necessari sul controllo dei dati di origine.

Problemi correlati