Entfernen Sie Sonderzeichen aus einem Datenbankfeld

8

Ich habe eine Datenbank mit mehreren tausend Datensätzen, und ich muss eines der Felder entfernen, um sicherzustellen, dass es nur bestimmte Zeichen enthält (alphanumerisch, Leerzeichen und einfache Anführungszeichen). Mit welcher SQL-Anweisung kann ich andere Zeichen (z. B. Schrägstriche usw.) aus diesem Feld in der gesamten Datenbank entfernen?

    
MarathonStudios 20.05.2011, 02:43
quelle

6 Antworten

20
%Vor%

Das ist ein guter Anfang.

    
Vinnie 20.05.2011, 02:56
quelle
5

Die Funktion Replace () ist die erste Wahl. Es kann jedoch manchmal schwierig sein, Sonderzeichen in eine Konsole zu schreiben. Für diese können Sie Replace mit der Funktion Char () kombinieren.

z.B. Entfernen von €

%Vor%

Hier finden Sie alle Ascii-Werte

Im Idealfall könntest du einen Regex machen, um alle speziellen Zeichen zu finden, aber anscheinend ist das mit MySQL nicht möglich .

Darüber hinaus müssen Sie es in Ihrer bevorzugten Skriptsprache ausführen.

    
DonaldSowell 20.05.2011 03:46
quelle
3

Dies kann auch nützlich sein.

Zuerst müssen Sie den Zeichensatz der Datenbank und / oder der Tabelle kennen. Angenommen, Sie haben eine UTF-8-Umgebung und möchten Symbole wie eingekreiste registrierte Symbole, eingekreiste Copyright-Zeichen und eingetragene Markenzeichen aus einem Feld entfernen / entfernen und dann im Internet nach Bing oder Yahoo oder Google suchen Hex-Code-Werte dieser Symbole im UTF-8-System:

%Vor%

Dann wird Ihre scrubbing Auswahl sql für Feld f1 aus Tabelle t1, die Hex / Unhex-Funktion in Verbindung mit der Replace-Funktion verwenden, höchstwahrscheinlich wie folgt aussehen:

SELECT cast(unhex(replace(replace(replace(hex(f1),'C2A9',''),'C2AE',''),'E284A2','')) AS char) AS cleanf1 FROM t1 ;

Beachten Sie, dass das ursprüngliche Feld, das bereinigt / bereinigt werden soll, f1 ist, die Tabelle t1 ist und der Ausgabekopf cleanf1 ist. Das "as char" Casting ist notwendig, weil, ohne es, die mysql 5.5.8, auf der ich getestet habe, Blob zurückgibt. Hoffe das hilft

    
Adams Biyi 29.07.2013 11:09
quelle
1

Sehen Sie sich LIB_MYSQLUDF_PREG an, das in den MySQL-Server kompiliert werden muss, verfügt jedoch über erweiterte Funktionen für reguläre Ausdrücke wie preg_replace , die bei Ihrer Aufgabe helfen wird.

    
Rasika 20.05.2011 02:55
quelle
1

Ausarbeiten auf Vinnies Antwort ... Sie können Folgendes verwenden (beachten Sie die Flucht in den letzten beiden Aussagen ...

%Vor%     
user7796548 03.04.2017 23:39
quelle
1

Ich habe dafür eine einfache Funktion erstellt

%Vor%

Anwendungsbeispiel:

%Vor%     
Juned Ansari 06.03.2018 11:03
quelle

Tags und Links