我有一张桌子,我需要更新一些名字,但我想知道
以下查询:
两者会做同样的事情吗?
查询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'
不,他们不会做同样的事情。
SQL 引擎所需的工作量完全不同。在第一个查询中,引擎必须遍历每一行并对 Name 列执行字符串替换操作。在第二个查询中,它正在搜索名称为“Jeff”的表,并将名称列更新为 Joe。
字符串替换是通配符。因此在第一个查询中,名称“Jeffrey”将变为“Joerey”。
不,这不一样。
第一个查询在整个字符串中查找字符串(请参阅replace() “用另一个字符串值替换所有出现的指定字符串值。 ”),第二个查询查找确切的字符串。
如果你有像 的记录
JeffJoe
,第一个查询将给出JoeJoe
,第二个查询将给出JeffJoe
(没有任何修改)。