martes, 27 de diciembre de 2011

Usar remplazar en SQL para borrar parte de un texto


Más de una vez me ha pasado, que he necesitado eliminar parte del contenido de un campo de texto, por ejemplo, porque se ha creado ese texto con información incorrecta mediante programación. Este error se ha detectado al cabo de un tiempo afectando a un volumen alto de registros, que impide la corrección manual de los mismos.

La forma más sencilla, es crear una consulta de actualización con REPLACE. Este comando necesita los siguientes valores
  • La cadena de texto o el campo de texto donde buscar el contenido a remplazar
  • El texto a buscar
  • El texto que lo sustituye
  • La posición de inicio a partir de donde queremos que lo busque
  • Número de veces que queremos que lo sustituya
  • Tipo de comparación de las dos cadenas

Si quiero utilizar este comando para borrar parte de un texto, el parámetro “texto que sustituye” le indicaremos ‘’ (2 comillas simples) de tal manera que si encuentra el texto a buscar lo sustituirá por estas comillas o lo que es lo mismo por nada

Pongamos un ejemplo
Tenemos una tabla pedidos donde tenemos un campo comentarios que contiene el texto “almacén clientes” y que queremos quitar, ya que a la hora de imprimir el pedido, no queremos que aparezca.

Una forma de eliminar el texto es con replace, actualizando el campo comentarios de todas los registros de pedidos

Update pedidos
Set pedidos.comentario=REPLACE(pedidos.comentario,”Almacén Clientes”,’’)

Información sobre las funciones de texto en transact SQL en MSDN

2 comentarios:

  1. Hola amigo gracias por el artículo, creo que es lo que estaba buscando, pero si me puedes echar una mano por favor. Tengo que borrar todos los <div y lo que contienen en su interior de un tabla.
    ¿Sabrías la sentencia que tengo que poner? La tabla se llama wp-posts.

    ResponderEliminar
  2. Hola me alegro de que te pueda servir
    ¿entiendo que en un campo de la tabla wp-post tienes un campo de tipo texto que contiene " div ... /div " y lo quieres borrar?

    ResponderEliminar