SQL'de Değiştir'i kullanma


13

Bir masam var ve bazı isimleri güncellemem gerekiyor ama merak ediyorum

aşağıdaki sorgular:

İkisi de aynı mı olacak?

Sorgu1

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

Query2

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

Yanıtlar:


11

Hayır, aynı değil.

İlk sorgu tüm dizede dizeyi arar (bkz. Replace () " Belirtilen dize değerinin tüm örneklerini başka bir dize değeriyle değiştirir. "), İkincisi tam dizeyi arar.

JeffJoeİlk sorgu verir gibi kayıtlarınız varsa JoeJoe, ikinci sorgu verir JeffJoe(değişiklik yapmadan).


25

Hayır, aynı şeyi yapmayacaklar.

  1. SQL motorunun gerektirdiği çaba tamamen farklıdır. İlk sorguda, motor her satırdan geçmeli ve Ad sütununda bir dize değiştirme işlemi gerçekleştirmelidir. İkinci sorguda, ismin "Jeff" olduğu tabloda arama yapıyor ve sadece Ad sütununu Joe olacak şekilde güncelliyor.

  2. Dize değiştirme joker karakterdir. İlk sorguda, "Jeffrey" Adı "Joerey" olur.


3
2. nokta daha önemli gibi görünüyor. Eğer doğru bir şey yapmazsa performans ilgisizdir.
Martin Smith

Muhtemelen haklısınız, ancak aslında güncellemenin iş hedefinin ne olması gerektiğini bilmiyoruz. Analizin sırasını tersine çevirmeliydim, ama her iki kusurdan da bahsetmek doğru şeydi. Akla gelen bir düşünce, OP'nin bizim için basitleştirdiği, ancak "Ad" ın sadece ilk addan ziyade tam adı içerdiği şekilde ayrıntıları dışarıda bıraktığıdır.
Jonathan Fite
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.