Menggunakan Ganti dalam SQL

13

Saya punya meja dan saya perlu memperbarui beberapa nama tetapi saya bertanya-tanya tentang

pertanyaan berikut:

Apakah keduanya akan melakukan hal yang sama?

Pertanyaan1

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

Pertanyaan2

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

Jawaban:

11

Tidak, tidak sama.

Kueri pertama mencari string dalam seluruh string (lihat ganti () " Mengganti semua kemunculan nilai string yang ditentukan dengan nilai string lain. "), Yang kedua mencari string yang tepat.

Jika Anda memiliki catatan suka JeffJoe, kueri pertama akan memberikan JoeJoe, kueri kedua akan memberikan JeffJoe(tanpa modifikasi apa pun).

irimias
sumber
25

Tidak, mereka tidak akan melakukan hal yang sama.

  1. Jumlah upaya yang dibutuhkan oleh mesin SQL sama sekali berbeda. Dalam kueri pertama, mesin harus melalui setiap baris dan melakukan operasi penggantian string pada kolom Nama. Dalam kueri kedua, itu mencari melalui tabel di mana nama "Jeff" dan hanya memperbarui kolom Nama menjadi Joe.

  2. Penggantian string adalah wildcard. Jadi dalam permintaan pertama, Nama "Jeffrey" akan menjadi "Joerey".

Jonathan Fite
sumber
3
Poin 2 tampaknya lebih penting. Jika tidak melakukan hal yang benar, kinerja tidak relevan.
Martin Smith
Anda mungkin benar, tetapi kami sebenarnya tidak tahu apa tujuan bisnis pembaruan seharusnya. Saya seharusnya membalik urutan analisis, tetapi saya pikir menyebutkan kedua kekurangan adalah hal yang benar untuk dilakukan. Satu pemikiran yang terlintas dalam pikiran adalah bahwa OP menyederhanakannya untuk kita, tetapi meninggalkan detail, sehingga "Nama" sebenarnya mengandung nama lengkap daripada hanya nama pertama.
Jonathan Fite