Search & replace 'http' to 'https' in database Search & replace 'http' to 'https' in database sql sql

Search & replace 'http' to 'https' in database


use REPLACE. and if there is a index on the field then the UPDATE can use them

UPDATE t     set url = REPLACE(url, 'http:', 'https:')     WHERE url LIKE '%http:%';

only change example.com

this will only find row with 'http://example.com'

UPDATE t     set url = REPLACE(url, 'http:', 'https:')     WHERE url LIKE '%http://example.com%';

or this will find all rows with http:// but only change only this http://example.com to https://example.com

UPDATE t     set url = REPLACE(url, 'http://example.com', 'https://example.com')     WHERE url LIKE '%http:%';


Warning, the answers given so far will mess up serialized data!

For example, say your site stores serialized data in a row with the URL in it, like this:

a:1:{i:0;s:19:”http://example.com”;}

Notice that the value of this item has 19 characters, and is denoted by s:19 in the array.

If you replace content using a SQL query, the same row on your new environment would end up like this:

a:1:{i:0;s:19:”https://example.com”;}

But after this change, the value is now 20 characters long meaning s:19 is incorrect. This invalidates the array and the entire row.

So either you make sure your SQL statements deal with serialized data, or if you happen to be using WordPress then there are a few options to search using PHP so as to not break the serialized rows:

Taken and adapted from: https://wpengine.com/support/wordpress-serialized-data/


I would use insert:

update t     set url = insert(url, 5, 0, 's')     where url like 'http:%';