Replace start of string in SQL
sql, sql-server
Solution
SELECT REPLACE([strUrl], '/myoldurl/', '/mynewurl/') FROM [UrlRewrite]
to address Martin's point:
SELECT CASE WHEN [strUrl] = '/myoldurl' THEN '/mynewurl' ELSE REPLACE([strUrl], '/myoldurl/', '/mynewurl/') END FROM [UrlRewrite]
or
SELECT
CASE
WHEN LEFT([strUrl], LEN('/myoldurl')) = '/myoldurl'
THEN '/mynewurl' + SUBSTRING([strUrl], LEN('/myoldurl')+1, LEN([strUrl]))
ELSE [strUrl]
END
FROM [UrlRewrite]
Problem
``` SELECT REPLACE([strUrl], '/myoldurl', '/mynewurl') FROM [UrlRewrite] ``` If `strUrl` is `/myoldurl/myoldurl_something_else`, it returns `/mynewurl/mynewurl_something_else`. I want it to be `/mynewurl/myoldurl_something_else`. How do I just replace from start of string in SQL?