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'
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:
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).
No, non faranno la stessa cosa.
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.
La sostituzione della stringa è jolly. Quindi nella prima query, il nome "Jeffrey" diventerebbe "Joerey".