Schreibweise vergleichen

Commu

Benutzer
Beiträge
12
Hallo Zusammen,

ich habe in einer Tabelle eine Liste von Schauspielern stehen.

idschauspieler
5119 Alycia Debnam Carey
7608Alycia Debnam-Carey

Bei der Sortierung nach Namen ist mir aufgefallen, das es Namen doppelt gibt. Sie unterscheiden sich in der Schreibweise.
Doppelte Einträge habe ich so gefunden.
Code:
SELECT schauspieler, COUNT(id) AS cnt
FROM ut_schauspieler
GROUP BY schauspieler
HAVING cnt > 1

gibt es eine Abfrage die mir bei nur einem unterschiedlichen Zeichen helfen?

Gruß Jörg
 
Werbung:
In diesem speziellen Fall kann man natürlich mit replace(schauspieler,'-',' ') AS schauspieler die unterschiedlichen Schreibweisen vereinheitlichen. Das wird natürlich nur den bestimmten Fall lösen. Für Dinge wie Groß/-Kleinschreibung, ß und ss oder s, ü und ue etc. gibt es in MSSQL noch COLLATE, keine Ahnung welches DBMS du genau hast.

Man kann sich das auch in einer eigenen Funktion zusammen bauen oder eben nach Funktionen oder anderen Möglichkeiten beim DBMS schauen.
 
Danke für die Antworten.

ich verwende eine MarieDB
ich habe die Aufgabenstellung in paar Schritten gelöst.

Code:
SELECT id , schauspieler
FROM ut_schauspieler
WHERE schauspieler LIKE '%-%'

im 2 Schritt mit Hilfe von PHP geändert
Code:
$schauspieler = str_replace ( '-' , ' ' , {-schauspieler-});

als nächstes nach dem geänderten String gesucht
Code:
SELECT id , schauspieler
FROM ut_schauspieler
WHERE schauspieler = '".$schauspieler."'

und dann die entsprechenden Updates und Deletes aus geführt
Code:
UPDATE zt_schauspieler
SET schauspieler_id = '".$row_minus_ss["id"]."'
WHERE schauspieler_id = '".$row_ominus_ss["id"]."'
und
Code:
DELETE FROM ut_schauspieler
WHERE id = '".$row_ominus_ss["id"]."'

Gruß Jörg
 
Wäre natürlich auch mit SQL gegangen aber wie ist ja egal. Achte nur drauf das du keine Datensätze löscht auf die noch referenziert wird.
 
Danke für die Antworten.

ich verwende eine MarieDB
ich habe die Aufgabenstellung in paar Schritten gelöst.

Code:
SELECT id , schauspieler
FROM ut_schauspieler
WHERE schauspieler LIKE '%-%'

im 2 Schritt mit Hilfe von PHP geändert
Code:
$schauspieler = str_replace ( '-' , ' ' , {-schauspieler-});

als nächstes nach dem geänderten String gesucht
Code:
SELECT id , schauspieler
FROM ut_schauspieler
WHERE schauspieler = '".$schauspieler."'

und dann die entsprechenden Updates und Deletes aus geführt
Code:
UPDATE zt_schauspieler
SET schauspieler_id = '".$row_minus_ss["id"]."'
WHERE schauspieler_id = '".$row_ominus_ss["id"]."'
und
Code:
DELETE FROM ut_schauspieler
WHERE id = '".$row_ominus_ss["id"]."'

Gruß Jörg
..., schon mal nachgesehen wie der wirklich geschrieben wird. Demnach ist "Alycia Debnam-Carey" richtig. Somit trägst du was falsche in die DB ein.
 
Werbung:
Eventuell solltest du dein "GROUP BY schauspieler" mal gegen ein "GROUP BY SOUNDEX(schauspieler)" tauschen.

Code:
SELECT MAX(schauspieler), COUNT(id) AS cnt
FROM ut_schauspieler
GROUP BY SOUNDEX(schauspieler)
HAVING cnt > 1

Mal sehen ob das in allen Fällen hilft.


so kannst du auch sehen welche Namen MariaDB zusammengefasst hat.


Code:
SELECT max(schauspieler), COUNT(id) AS cnt , GROUP_CONCAT(distinct schauspieler) AS diffs
FROM ut_schauspieler
GROUP BY SOUNDEX(schauspieler)
HAVING cnt > 1;


Gruß

Bernd
 
Zuletzt bearbeitet:
Zurück
Oben