Estoy tratando de eliminar ciertas cadenas de un campo de Descripción en una tabla. Con este fin he hecho esta funciónUsando T-SQL eliminar palabras especificadas de una cadena
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
Soy nuevo en la programación SQL y me gustaría mejorar en esto. Suponiendo que quisiera tener una tabla que contuviera una lista de "malas palabras" que quisiera eliminar de una cadena y recorrerla al limpiar la descripción.
Debo señalar que este proceso debe ser lo más eficiente posible ya que estoy tratando con 15 millones de registros.
SQL Server tiene una función 'Reemplazar' Sugeriría usarlo y reemplazarlo por ''. Aquí hay un [enlace de MSFT] (http://msdn.microsoft.com/en-us/library/ms186862.aspx) Si le preocupa el rendimiento, puede examinar expresiones regulares que parecen funcionar aún más rápido. – xQbert
Me preocupa el uso de la función de reemplazo de vainilla para eliminar partes de una palabra, dejándome un poco molesto. Como si reemplazo "Ejecutar" y encuentra "En ejecución", me quedaré con "ning". Tengo muchas ganas de empezar a usar expresiones regulares pero entiendo que debe tener varios privilegios en la base de datos y tener software adicional (visual studio?) Instalado en la computadora, por lo que por el momento no es una opción. – user1075081
Entiendo y aprecio la preocupación. Sin embargo, es un problema que no puedes evitar por completo. la única forma de mitigar verdaderamente este problema es la inspección visual de cada entrada; con un proceso de aprobación. incluso con su técnica, se encontraría con problemas al final de una oración. MALA PALABRA. – xQbert