Jump to content

Suchen und Löschen nach bestimmter Zeichenanzahl


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

Hallo,

 

ich suche aktuell eine Lösung zum Anzeigen des Zeichens / der Zeichenkette ';' (Semikolon) innerhalb einer Spalte (ca. 250.000 Einträge), wenn dieses mindestens zweimal vorkommt.

 

Darüber hinaus soll im zweiten Schritt alle Zeichen nach dem zweiten Semikolon gelöscht werden.

 

 

Hat jemand eine Idee?

 

Danke vorab.

Geschrieben

Zur Suche nach mit zwei oder mehr Zeichen habe ich eine Variante gefunden. Vielleicht gibt es auch noch bessere:

 

select spalte from tabelle where spalte LIKE '%;%;%' ;

 

Nun brauche immer noch die Lösung für das Löschen der Zeichen nach und/oder inkl. dem zweiten Semikolon.

 

Danke.

  • 2 Monate später...
Geschrieben
Dein "Befehl" der Wahl: REPLACE

REPLACE (Transact-SQL)

 

Gruß

Carsten

Leider komme ich mit dem einfachen REPLACE nicht weiter.

 

Ausgangsbeispiele (Beispielzelle):

 

meier lh10; müller gf3; schulz 01

 

Ergebnis soll so aussehen:

 

meier lh10; müller gf3

 

oder

 

meier lh10; müller gf3;

 

Meine Vorstellungen mit einen einfachen Replace funktionieren leider nicht.

 

Beispiel-Statement:

UPDATE Exemplar SET Spalte = REPLACE(Spalte, '%;%;%', '%;%;');

 

Hinweis: Die Anzahl der Zeichen zwischen den Semikolons ist nicht eindeutig.

 

Ich möchte "nur" alle Zeichen nach dem zweiten Semikolon entfernen/löschen.

 

Vielleicht hat noch einer eine Idee.

 

Danke und Gruß

Geschrieben

Hallo,

das sollte klappen:

 

UPDATE Exemplar

SET Spalte = LEFT(Spalte, CHARINDEX(';', Spalte, CHARINDEX(';', Spalte)+1))

WHERE Spalte LIKE '%;%;%'

 

Das innerste CHARINDEX findet das erste Semikolon (Position).

Auf diese Position wird eine 1 addiert und dem zweiten CHARINDEX als Startwert der Suche übergeben.

Nun findet das zweite CHARINDEX die Position des zweiten Semikolon, das nun an LEFT übergeben wird.

LEFT bildet dann den neuen String.

Wichtig: mit WHERE muss(!) garantiert werden, dass die zu ändernden Strings auch mindestens 2 Semikolon enthalten, sonst gibt es leere Spalten.

 

CHARINDEX (Transact-SQL)

 

Am besten erstmal mit SELECT testen:

 

SELECT LEFT(Spalte, CHARINDEX(';', Spalte, CHARINDEX(';', Spalte)+1))

FROM Exemplar

WHERE Spalte LIKE '%;%;%'

 

 

Gruß Kai

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...