2012-06-07 20 views
13

Tengo una tabla con varias columnas varchar que son casi idénticas a las claves principales que tengo en otra tabla, con la excepción de un punto (.). Miré la función replace en T-SQL, pero el primer argumento no es una expresión. ¿Cómo puedo eliminar todas las apariciones de un personaje en particular con SQL? Parece que la respuesta correcta podría ser reemplazar con una cadena de longitud cero. ¿Eso está cerca?Eliminar un solo carácter de un campo varchar SQL Server 2008

Para quien sintió que la pregunta no mostraba esfuerzo de investigación, se debió principalmente a un malentendido de la documentación en sí.

+5

¿Qué documentación está mirando? El primer parámetro para [REPLACE] (http://msdn.microsoft.com/en-us/library/ms186862.aspx) es una expresión de cadena. – Oded

+0

see 'Replace' fn en http://msdn.microsoft.com/en-us/library/ms186862.aspx – Gerrat

+0

Tomé la documentación msdn string_expression para indicar que tenía que ser una cadena literal, principalmente porque los ejemplos proporcionados no usar una columna Gracias. – wootscootinboogie

Respuesta

38

puede actualizar la tabla usando directamente REPLACE sobre los valores de la columna:

UPDATE myTable 
SET myColumn = REPLACE(myColumn, '.', '') 
4

¿Desea eliminar todas las instancias de. de la cadena? Si es así, tenías razón sobre REPLACE:

DECLARE @Example TABLE 
(
    Value VARCHAR(100) 
) 
INSERT @Example (Value) 
VALUES ('Test.Value'), ('An.otherT.est') 

SELECT 
    REPLACE(Value, '.', '') 
FROM 
    @Example 

-- Replace only the first '.' 
SELECT 
    STUFF(Value, CHARINDEX('.', Value, 0), 1, '') 
FROM 
    @Example 

Editar, por lo que el ejemplo un poco más útil, ya que jugó un rato con él de todos modos, lo mismo que publicar el ejemplo. :)

6
update your_table 
set some_column = replace(some_column, '.', '') 
Cuestiones relacionadas