ฉันมีตารางและฉันจำเป็นต้องอัปเดตชื่อบางส่วน แต่ฉันสงสัยเกี่ยวกับ
แบบสอบถามต่อไปนี้:
ทั้งสองจะทำเหมือนกันหรือไม่
Query1
Update mytable
Set Name = Replace(Name,'Jeff','Joe')
Query2
Update mytable
Set Name = 'Joe'
where Name = 'Jeff'
ฉันมีตารางและฉันจำเป็นต้องอัปเดตชื่อบางส่วน แต่ฉันสงสัยเกี่ยวกับ
แบบสอบถามต่อไปนี้:
ทั้งสองจะทำเหมือนกันหรือไม่
Query1
Update mytable
Set Name = Replace(Name,'Jeff','Joe')
Query2
Update mytable
Set Name = 'Joe'
where Name = 'Jeff'
คำตอบ:
ไม่มันไม่เหมือนกัน
แบบสอบถามแรกค้นหาสตริงภายในสตริงทั้งหมด (ดูreplace () " แทนที่ค่าสตริงที่ระบุทั้งหมดด้วยค่าสตริงอื่น ") รายการที่สองค้นหาสตริงที่แน่นอน
หากคุณมีบันทึกเช่นJeffJoeแบบสอบถามแรกจะให้JoeJoeแบบสอบถามที่สองจะให้JeffJoe(ไม่มีการดัดแปลงใด ๆ )
ไม่พวกเขาจะไม่ทำสิ่งเดียวกัน
จำนวนของความพยายามที่ต้องการโดยเอ็นจิน SQL นั้นแตกต่างอย่างสิ้นเชิง ในแบบสอบถามแรกเครื่องยนต์จะต้องผ่านทุกแถวและดำเนินการแทนที่สตริงในคอลัมน์ชื่อ ในเคียวรีที่สองเป็นการค้นหาในตารางที่ชื่อคือ "Jeff" และเพิ่งอัพเดตคอลัมน์ชื่อเป็น Joe
การแทนที่สตริงคืออักขระตัวแทน ดังนั้นในการสืบค้นแรกชื่อ "Jeffrey" จะกลายเป็น "Joerey"