Utilizzando Sostituisci in SQL


13

Ho una tabella e ho bisogno di aggiornare alcuni nomi, ma mi chiedevo come

seguenti query:

Entrambi faranno lo stesso?

Query1

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

Query2

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

Risposte:


11

No, non è lo stesso.

La prima query cerca la stringa all'interno dell'intera stringa (vedi sostituisci () " Sostituisce tutte le occorrenze di un valore di stringa specificato con un altro valore di stringa. "), La seconda cerca la stringa esatta.

Se hai record come JeffJoe, la prima query darà JoeJoe, la seconda query darà JeffJoe(senza alcuna modifica).


25

No, non faranno la stessa cosa.

  1. La quantità di sforzo richiesta dal motore SQL è completamente diversa. Nella prima query, il motore deve passare attraverso ogni riga ed eseguire un'operazione di sostituzione della stringa nella colonna Nome. Nella seconda query, sta cercando nella tabella in cui il nome è "Jeff" e sta semplicemente aggiornando la colonna Nome in modo che sia Joe.

  2. La sostituzione della stringa è jolly. Quindi nella prima query, il nome "Jeffrey" diventerebbe "Joerey".


3
Il punto 2 sembra il più importante. In caso contrario, le prestazioni sono irrilevanti.
Martin Smith,

Probabilmente hai ragione, ma in realtà non sappiamo quale dovrebbe essere l'obiettivo aziendale dell'aggiornamento. Avrei dovuto invertire l'ordine dell'analisi, ma penso che menzionare entrambi i difetti fosse la cosa giusta da fare. Un pensiero che viene in mente è che l'OP lo ha semplificato per noi, ma ha lasciato fuori i dettagli, in modo che "Nome" contenga effettivamente il nome completo anziché solo il nome.
Jonathan Fite,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.