James
James

Reputation: 197

MySQL Replace query

I have one table, and I need to remove a specific text from a specific field. This field contains a full URL of an image, I need to remove the URL and just keep the image filename.

So: Current date: fieldname: www.example.com/photo.jpg What I want to do is remove www.example.com/ from all of the entries for this field.

I know how to use the search and replace function, but I don't know how to leave part of the data intact.

This is what I've used but can't modify it to make it work the way I want:

UPDATE table SET oc_upload1 = REPLACE(oc_upload1,'newtext') WHERE oc_upload1 LIKE "oldtext"

Is this possible? If so, how? Thank you!

Upvotes: 0

Views: 2099

Answers (1)

matt
matt

Reputation: 4734

This should do:

UPDATE table
SET image = REPLACE(image, 'www.example.com/','')

but, it's possible that image contains 'www.example.com/' as part of image file name so to be extra safe and replace only the first occurence of www.example.com

UPDATE table
SET image = SUBSTRING(image, LENGTH('www.example.com/') + 1)
WHERE image LIKE 'www.example.com/%'

But if You really, really just want the file name and not path to the file You can also use:

UPDATE table
SET image = SUBSTRING_INDEX(image,'/',-1)

Note that above statement will change 'www.example.com/images/01/02/daisy.jpg' to 'daisy.jpg', not 'images/01/02/daisy.jpg'. It also wont change rows that does not contain '/' in image.

Upvotes: 3

Related Questions