T-SQL entfernt alle nicht alphanumerischen und nicht numerischen Zeichen

7

Gibt es eine klügere Möglichkeit, alle Sonderzeichen zu entfernen, anstatt eine Folge von etwa 15 verschachtelten Ersetzungsanweisungen zu haben?

Folgendes funktioniert, aber behandelt nur drei Zeichen (Und-Zeichen, Leerzeichen und Punkt).

%Vor%     
NealWalters 09.03.2012, 14:51
quelle

5 Antworten

14

Ein flexibler Weg;

%Vor%     
Alex K. 09.03.2012, 14:58
quelle
7

Erstellen Sie eine Funktion:

%Vor%

Dann:

%Vor%

Ergebnisse:

%Vor%

Um es flexibler zu machen, könnten Sie das Muster übergeben, das Sie zulassen möchten:

%Vor%

Dann:

%Vor%

Ergebnisse:

%Vor%     
Aaron Bertrand 09.03.2012 15:10
quelle
6

Ich war vor einigen Jahren mit diesem Problem konfrontiert, also schrieb ich eine SQL-Funktion, um den Trick zu machen. Hier ist der Originalartikel (wurde verwendet, um Text aus HTML zu extrahieren ). Ich habe seitdem die Funktion wie folgt aktualisiert:

%Vor%     
datagod 09.03.2012 14:59
quelle
1

Wenn Sie SQL CLR verwenden können, können Sie dafür .NET-reguläre Ausdrücke verwenden.

Es gibt ein (kostenloses) Paket von Drittanbietern, das diese und mehr - SQL Sharp enthält.

    
Oded 09.03.2012 14:53
quelle
1

Ich weiß, das ist ein alter Faden, aber trotzdem, könnte für andere nützlich sein. Hier ist ein schnelles und schmutziges (was ich invers gemacht habe - Nicht-Numerik entkleidet) - mit einem rekursiven CTE. Was dieses eine für mich macht, ist, dass es eine Inline-Funktion ist - so umgeht man den fiesen RBAR-Effekt der üblichen skalaren und tabellenwertigen Funktionen. Passen Sie Ihren Filter nach Bedarf an, um beliebige Zeichenarten einzuschließen oder auszuschließen.

%Vor%     
Dylan Westphal 08.09.2015 14:55
quelle

Tags und Links