Usando Reemplazar en SQL


13

Tengo una tabla y necesito actualizar algunos nombres, pero me preguntaba sobre el

siguientes consultas:

¿Harán ambos lo mismo?

Consulta1

Update mytable
Set Name = Replace(Name,'Jeff','Joe')

Consulta2

Update mytable
Set Name = 'Joe'
where Name = 'Jeff'

Respuestas:


11

No, no es lo mismo.

La primera consulta busca una cadena dentro de toda la cadena (consulte replace () " Reemplaza todas las apariciones de un valor de cadena especificado con otro valor de cadena "), la segunda busca la cadena exacta.

Si tiene registros como JeffJoe, la primera consulta dará JoeJoe, la segunda consulta dará JeffJoe(sin ninguna modificación).


25

No, no harán lo mismo.

  1. La cantidad de esfuerzo requerida por el motor SQL es completamente diferente. En la primera consulta, el motor debe pasar por cada fila y realizar una operación de reemplazo de cadena en la columna Nombre. En la segunda consulta, busca en la tabla donde el nombre es "Jeff" y simplemente actualiza la columna Nombre para que sea Joe.

  2. El reemplazo de la cadena es comodín. Entonces, en la primera consulta, el nombre "Jeffrey" se convertiría en "Joerey".


3
El punto 2 parece el más importante. Si no hace lo correcto, el rendimiento es irrelevante.
Martin Smith

Probablemente tenga razón, pero en realidad no sabemos cuál es el objetivo comercial de la actualización. Debería haber invertido el orden del análisis, pero creo que mencionar ambos defectos fue lo correcto. Un pensamiento que viene a la mente es que el OP lo simplificó para nosotros, pero omitió los detalles, de modo que "Nombre" en realidad contiene el nombre completo en lugar de solo el primer nombre.
Jonathan Fite
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.