У мене є таблиця, і мені потрібно оновити деякі імена, але мені було цікаво
наступні запити:
Чи будуть обидва робити те саме?
Запит1
Update mytable
Set Name = Replace(Name,'Jeff','Joe')
Запит2
Update mytable
Set Name = 'Joe'
where Name = 'Jeff'
У мене є таблиця, і мені потрібно оновити деякі імена, але мені було цікаво
наступні запити:
Чи будуть обидва робити те саме?
Запит1
Update mytable
Set Name = Replace(Name,'Jeff','Joe')
Запит2
Update mytable
Set Name = 'Joe'
where Name = 'Jeff'
Відповіді:
Ні, це не те саме.
Перший запит шукає рядок у всій рядку (див. Заміна () " Замінює всі входження вказаного значення рядка іншим значенням рядка. "), Другий шукає точний рядок.
Якщо у вас є записи типу JeffJoe, перший запит дасть JoeJoe, другий запит дасть JeffJoe(без будь-яких змін).
Ні, вони не зроблять те саме.
Кількість зусиль, необхідних для двигуна SQL, зовсім інша. У першому запиті двигун повинен пройти кожен рядок і виконати операцію заміни рядка в стовпці Ім'я. У другому запиті він проводить пошук через таблицю, де ім'я "Jeff", і просто оновлення стовпця Name на Joe.
Заміна рядків - це підстановка. Тож у першому запиті ім'я "Джефрі" перетворилося б на "Джорі".