Mithilfe von T-SQL entfernen angegebenen Wörter aus einem string
Ich bin versucht, zu beseitigen bestimmte Zeichenfolgen aus einem Textfeld in einer Tabelle. Zu diesem Zweck habe ich aus dieser Funktion
CREATE FUNCTION fnDescriptionClean
(@strDescription varchar(50))
RETURNS varchar(50)
AS
BEGIN
declare @Return varchar(50)
declare @badword varchar(50)
set @badword = 'Front'
set @strDescription = CASE
--Remove from mid string
WHEN @strDescription LIKE '% ' + @Badword +' %' THEN REPLACE(@strDescription,' ' + @Badword + ' ',' ')
--Remove from start of string
WHEN @strDescription LIKE @Badword +' %' THEN RIGHT(@strDescription, (len(@strDescription)-(len(@Badword)+1)))
--Remove from end of string
WHEN @strDescription LIKE '% ' + @Badword THEN LEFT(@strDescription, (len(@strDescription)-(len(@Badword)+1)))
ELSE @strDescription END
set @badword = 'Right'
set @strDescription = CASE
WHEN @strDescription LIKE '% ' + @Badword +' %' THEN REPLACE(@strDescription,' ' + @Badword + ' ',' ')
WHEN @strDescription LIKE @Badword +' %' THEN RIGHT(@strDescription, (len(@strDescription)-(len(@Badword)+1)))
WHEN @strDescription LIKE '% ' + @Badword THEN LEFT(@strDescription, (len(@strDescription)-(len(@Badword)+1)))
ELSE @strDescription END
RETURN @strDescription
end
Ich bin neu in SQL-Programmierung und möchte zu verbessern. Angenommen, ich wollte eine Tabelle, die eine Liste der "bad words", die ich sein wollte, entfernt aus einem string und Schleife durch, wenn die Reinigung der Beschreibung.
Sollte ich darauf hinweisen, dass dieser Prozess muss so effizient wie möglich sein, da beschäftige ich mich mit 15 Millionen Datensätzen.
- SQL server hat eine "Ersetzen" - Funktion würde ich vorschlagen, es zu benutzen und ersetzen Sie mit ". Hier ist ein MSFT link, Wenn Sie sind besorgt über die Leistung kann man sich in die Regulären Ausdrücke, die zu funktionieren scheint sogar noch schneller.
- Ich bin besorgt, dass mit der Vanille ersetzen Funktion bekomme ich Teile von word entfernt und ließ mich eine lästige bit-string. Wie, wenn ich ersetzen Sie "Ausführen" und findet es "Läuft" werde ich Links mit "ning". Ich will sehr viel, um zu starten mit regulären Ausdrücken, aber ich verstehe Sie brauchen, um über verschiedene Privilegien für die Datenbank und die zusätzliche software (visual studio?) installiert auf dem computer - also im moment ist dies nicht eine option.
- Ich verstehe und Schätze die Sorge. Aber es ist ein problem, das Sie nicht vermeiden können, in vollem Umfang. der einzige Weg, um wirklich dieses Problem verringert werden, ist die visuelle Inspektion jeder Eintrag; mit einer Zustimmung Prozess. auch mit Ihrer Technik, die Sie würde laufen in Probleme mit es an das Ende eines Satzes. BADWORD.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Warum verwenden Sie nicht nur ERSETZEN?