Ich suche nach Möglichkeiten zum Ersetzen / Codieren von Text mithilfe von RegEx basierend auf den folgenden RegEx-Einstellungen / -Parametern:
RegEx.IgnoreCase = True
RegEx.Global = True
RegEx.Pattern = "[^a-z\d\s.]+"
Ich habe einige Beispiele für RegEx gesehen, war jedoch verwirrt darüber, wie es in SQL Server auf die gleiche Weise angewendet werden soll. Anregungen wären hilfreich. Danke dir.
sql-server
regex
sql-server-2008
tsql
Kontroll-Freak
quelle
quelle
Antworten:
Sie müssen nicht mit verwaltetem Code interagieren, da Sie LIKE verwenden können :
Wenn dein Ausdruck mit endet,
+
kannst du mitgehen'%[^a-z0-9 .][^a-z0-9 .]%'
BEARBEITEN : um es klar zu machen: SQL Server unterstützt keine regulären Ausdrücke ohne verwalteten Code. Abhängig von der Situation kann der
LIKE
Operator eine Option sein, es fehlt jedoch die Flexibilität, die reguläre Ausdrücke bieten.quelle
+
Quantifizierer fälschlicherweise so, wie{1,2}
er angenommen werden sollte{1, }
. Überraschenderweise funktionierte dies für das OP.LIKE
ist kein regulärer Ausdruck (es handelt sich um eine eingeschränktere Syntax für die Mustererkennung). Der Mangel an regulärer Unterstützung bedeutet also nicht, dass dies nicht funktioniert.Leicht modifizierte Version von Julios Antwort.
Sie benötigen Ole-Automatisierungsprozeduren, die in SQL aktiviert sind:
quelle
Wie in diesem Artikel müssen Sie eine CLR-Prozedur erstellen, die Regex-Funktionen bietet dargestellt.
Ihre Beispielfunktion verwendet VB.NET:
... und wird in SQL Server mit dem folgenden SQL installiert (wobei durch '%' getrennte Variablen durch ihre tatsächlichen Entsprechungen ersetzt werden:
quelle
Reguläre Ausdrücke in SQL Server-Datenbanken Implementierung Verwendung
Regulärer Ausdruck - Beschreibung
. Übereinstimmen mit einem beliebigen Zeichen
* Übereinstimmen mit einem beliebigen Zeichen
+ Übereinstimmen mit mindestens einer Instanz des Ausdrucks vor
^ Beginn am Zeilenanfang
$ Suche am Zeilenende
< Nur übereinstimmen, wenn das Wort an diesem Punkt beginnt
> Nur übereinstimmen, wenn das Wort an diesem Punkt endet
\ n Zeilenumbruch abgleichen
[] Mit einem beliebigen Zeichen in Klammern übereinstimmen
[^ ...] Entspricht einem beliebigen Zeichen, das nicht nach ^
[ABQ]% aufgeführt ist. Die Zeichenfolge muss entweder mit den Buchstaben A, B oder Q beginnen und kann beliebig lang sein
[A B C D]% Die Zeichenfolge muss eine Länge von zwei oder mehr haben und mit A oder B beginnen und C oder D als zweites Zeichen
[AZ]% haben. Die Zeichenfolge kann beliebig lang sein und mit einem beliebigen Buchstaben von A bis Z
[A beginnen -Z0-9]% Die Zeichenfolge kann beliebig lang sein und muss mit einem beliebigen Buchstaben von A bis Z oder einer Ziffer von 0 bis 9 beginnen.
[^ AC]% Die Zeichenfolge kann beliebig lang sein, darf jedoch nicht mit den Buchstaben A bis C beginnen
% [AZ] Die Zeichenfolge kann beliebig lang sein und mit einem der Buchstaben von A bis Z enden.
% [% $ # @]% Die Zeichenfolge kann beliebig lang sein und muss mindestens eines der darin enthaltenen Sonderzeichen enthalten die Klammer
quelle
Oder ein anderer Ausdruck anstelle von AZ
quelle
Ähnlich wie bei der Antwort von @ mwigdahl können Sie auch eine .NET-CLR in C # mit Code wie z.
Installationsanweisungen finden Sie hier
quelle