Sử dụng Thay thế trong SQL


13

Tôi có một bảng và tôi cần cập nhật một số tên nhưng tôi đã tự hỏi về

truy vấn sau đây:

Cả hai sẽ làm như vậy?

Truy vấn1

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

Truy vấn2

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

Câu trả lời:


11

Không, nó không giống nhau.

Truy vấn đầu tiên tìm chuỗi trong toàn bộ chuỗi (xem thay thế () " Thay thế tất cả các lần xuất hiện của một giá trị chuỗi được chỉ định bằng một giá trị chuỗi khác. "), Lần thứ hai tìm chuỗi chính xác.

Nếu bạn có hồ sơ như thế JeffJoe, truy vấn đầu tiên sẽ cung cấp JoeJoe, truy vấn thứ hai sẽ cung cấp JeffJoe(không có bất kỳ sửa đổi nào).


25

Không, họ sẽ không làm điều tương tự.

  1. Lượng nỗ lực mà công cụ SQL yêu cầu là hoàn toàn khác nhau. Trong truy vấn đầu tiên, công cụ phải đi qua mỗi hàng và thực hiện thao tác thay thế chuỗi trên cột Tên. Trong truy vấn thứ hai, nó đang tìm kiếm trong bảng có tên là "Jeff" và chỉ cập nhật cột Tên thành Joe.

  2. Thay thế chuỗi là ký tự đại diện. Vì vậy, trong truy vấn đầu tiên, Tên "Jeffrey" sẽ trở thành "Joerey".


3
Điểm 2 có vẻ quan trọng hơn. Nếu nó không làm hiệu suất đúng là không liên quan.
Martin Smith

Bạn có thể đúng, nhưng chúng tôi thực sự không biết mục tiêu kinh doanh của bản cập nhật là gì. Đáng lẽ tôi nên đảo ngược thứ tự phân tích, nhưng tôi nghĩ đề cập đến cả hai sai sót là điều nên làm. Một ý nghĩ xuất hiện trong đầu là OP đã đơn giản hóa nó cho chúng ta, nhưng bỏ qua các chi tiết, sao cho "Tên" thực sự chứa tên đầy đủ thay vì chỉ tên đầu tiên.
Jonathan Fite
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.