Tenho uma tabela e preciso atualizar alguns nomes mas queria saber sobre o
seguintes consultas:
Ambos farão o mesmo?
Consulta1
Update mytable
Set Name = Replace(Name,'Jeff','Joe')
Consulta2
Update mytable
Set Name = 'Joe'
where Name = 'Jeff'
Não, eles não vão fazer a mesma coisa.
A quantidade de esforço exigida pelo mecanismo SQL é completamente diferente. Na primeira consulta, o mecanismo deve passar por todas as linhas e executar uma operação de substituição de string na coluna Nome. Na segunda consulta, ele está pesquisando na tabela onde o nome é "Jeff" e apenas atualizando a coluna Nome para ser Joe.
A substituição de string é curinga. Assim, na primeira consulta, o nome "Jeffrey" se tornaria "Joerey".
Não, não é o mesmo.
A primeira consulta procura por string dentro de toda a string (consulte replace() " Substitui todas as ocorrências de um valor de string especificado por outro valor de string. "), a segunda procura a string exata.
Se você tiver registros como
JeffJoe
, a primeira consulta daráJoeJoe
, a segunda consulta daráJeffJoe
(sem qualquer modificação).