UPDATE SET REPLACE()ステートメントが行に一致するのに、何も変更せず、警告を出さないのはなぜですか?


9

フィールドで特定の文字列を探していますが、新しい文字列に置き換えたいと考えています。具体的には、あるURLへのすべての参照を別のURLに変更する必要があります。このSQLステートメントを作成し、mysql>MySQL Community Server 5.1.54を使用してCentOS 5.5のプロンプトで実行しています。

update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%');

応答は次のとおりです。

Query OK, 0 rows affected (0.02 sec)
Rows matched: 618  Changed: 0  Warnings: 0

変更が行われない理由を追跡するにはどうすればよいですか?

編集1:

Aaron Bertrandのおかげで、REPLACE()ワイルドカードを処理できないことがわかり、それを完全に間違って使用していました(WHERE句の欠落など)。これが私の改定された声明です。

UPDATE [table]
SET [column] =
REPLACE (
    [column],
    'companydomain.com',
    'companydomain.org' )
WHERE
    [column]
LIKE
    '%companydomain.com%';

私は古い、おなじみを受け取ります:

Query OK, 0 rows affected (0.02 sec)
Rows matched: 167  Changed: 0  Warnings: 0

何が悪いのでしょうか?

編集2:

何が悪かったのか教えてやる!! 私は仮定について質問していませんでした。私の仮定では、置換する文字列はすべて小文字でした。WHERE句は、見LIKE %companydomain.com%たものすべてを返していました。これには、CompanyDomain.com、CoMpAnYdOmAiN.comなどのすべての大文字の組み合わせが含まれます。

それを渡してREPLACE()、companydomain.comを厳密に探して、companydomain.orgに置き換えました。

REPLACE (
    [column],
    'companydomain.com',
    'companydomain.org' )

もちろん、私の記録は返されましたが、何も置き換えられませんでした。REPLACE()大文字の使用を考慮して変更すると、すべてのレコードが更新され、すべて順調に進んでいるようです。REPLACE()したがって、私のシナリオの正しい構文は次のとおりです。

REPLACE (
    [column],
    'CompanyDomain.com',
    'companydomain.org' )

回答:


12

REPLACEそのようにワイルドカードを使用しません。私はあなたが意味したと思います:

UPDATE [table] 
  SET [column] = REPLACE([column],'TLD.com','TLD.org')
  WHERE [column] LIKE '%TLD.com%';

WHERE句がないため、618行を更新しようとしましたが%TLD.com%、その列にのインスタンスは見つかりませんでした。影響を受ける行を確認するには、SELECT代わりにa を実行します。

SELECT [column], REPLACE([column], 'TLD.com', 'TLD.org') AS new_value
  FROM [table]
  WHERE [column] LIKE '%TLD.com%';

0

まず、selectクエリを使用して確認する必要があります。

SELECT * FROM colleges
WHERE course_name LIKE '%&amp%'

次に、更新する必要があります。

UPDATE colleges
SET course_name = REPLACE(course_name, '&amp', '&')
WHERE id = 1

結果:Cloud &amp Enterprise ComputingCloud & Enterprise Computing

最後に、すべてを申請する必要があります。

UPDATE colleges
SET course_name = REPLACE(course_name, '&amp', '&')

結果:Corporate &amp Insolvency LawCorporate & Insolvency Law

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.