SQLでの置換の使用


13

テーブルがあり、いくつかの名前を更新する必要がありますが、

次のクエリ:

両方とも同じことをしますか?

クエリ1

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

クエリ2

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

回答:


11

いいえ、同じではありません。

最初のクエリは、文字列全体の中から文字列を探します(replace()を参照して指定された文字列値のすべての出現を別の文字列値に置き換えます。」)。

のようなレコードがあるJeffJoe場合、最初のクエリはを返しJoeJoe、2番目のクエリはJeffJoe(変更なしで)を返します。


25

いいえ、彼らは同じことをしません。

  1. SQLエンジンに必要な労力はまったく異なります。最初のクエリでは、エンジンはすべての行を調べて、Name列で文字列置換操作を実行する必要があります。2番目のクエリでは、名前が「Jeff」であるテーブルを検索し、Name列をJoeに更新しています。

  2. 文字列の置換はワイルドカードです。したがって、最初のクエリでは、名前「Jeffrey」は「Joerey」になります。


3
ポイント2がより重要なようです。正しく動作しない場合、パフォーマンスは関係ありません。
マーティンスミス

あなたはおそらく正しいかもしれませんが、実際には更新のビジネス目標が何であるかはわかりません。分析の順序を逆にする必要がありましたが、両方の欠陥に言及することが正しいことだと思います。思い浮かぶのは、OPによって簡略化されているが、詳細は省略されているため、「名前」には実際には名だけではなく完全な名前が含まれているということです。
ジョナサンファイト
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.