miércoles, 8 de mayo de 2013

¿Cómo quitar las tildes o acentos gráficos a texto almacenado en un campo de una tabla en sql server?

Bastante simple, usando la función 

REPLACE  de Transact-SQL la cual Reemplaza todas las instancias de un valor de cadena especificado por otro valor de cadena.

Sintaxis:
REPLACE ( string_expression , string_pattern , string_replacement )

Argumentos:
string_expression
Es la expresión de cadena que se va a buscar. string_expression puede ser de un tipo de datos binario o de caracteres.
string_pattern
Es la subcadena que se va a buscar. string_pattern puede ser de un tipo de datos binario o de caracteres. string_pattern no puede ser una cadena vacía (''), y no debe superar el número máximo de bytes que cabe en una página.
string_replacement
Es la cadena de reemplazo. string_replacement puede ser de un tipo de datos binario o de caracteres.
Tipo valor devuelto:
Devuelve nvarchar si uno de los argumentos de entrada tiene el tipo de datos nvarchar; de lo contrario, REPLACE devuelve varchar.
Devuelve NULL si alguno de los argumentos es NULL.
Si string_expression no es de tipo varchar(max) o nvarchar(max),REPLACE trunca el valor devuelto en 8.000 bytes. Para devolver valores mayores de 8.000 bytes, string_expression debe convertirse explícitamente a un tipo de datos de valores grandes.
Ejemplo:
--Primero confirmamos como va a quedar:
Select replacereplace ( replace  (replacereplace  NOMBRE_CAMPO, 'á', 'a' ), 'é', 'e' ), 'í', 'i' ), 'ó', 'o' ), 'ú', 'u' )
from NOMBRE_TABLA
--Ahora hacemos el update:
Update SUPLIDORES
set NOMBRE_CAMPO = replacereplace ( replace  (replacereplace  NOMBRE_CAMPO, 'á', 'a' ), 'é', 'e' ), 'í', 'i' ), 'ó', 'o' ), 'ú', 'u' )
Fuente MSDN

3 comentarios: