SELECT REPLACE([strUrl], '/myoldurl', '/mynewurl') FROM [UrlRewrite]
如果strUrl
是/myoldurl/myoldurl_something_else
,则返回/mynewurl/mynewurl_something_else
。我希望它是/mynewurl/myoldurl_something_else
。
如何从 SQL 中的字符串开头替换?
SELECT REPLACE([strUrl], '/myoldurl', '/mynewurl') FROM [UrlRewrite]
如果strUrl
是/myoldurl/myoldurl_something_else
,则返回/mynewurl/mynewurl_something_else
。我希望它是/mynewurl/myoldurl_something_else
。
如何从 SQL 中的字符串开头替换?
SELECT REPLACE([strUrl], '/myoldurl/', '/mynewurl/') FROM [UrlRewrite]
解决马丁的观点:
SELECT CASE WHEN [strUrl] = '/myoldurl' THEN '/mynewurl' ELSE REPLACE([strUrl], '/myoldurl/', '/mynewurl/') END FROM [UrlRewrite]
或者
SELECT
CASE
WHEN LEFT([strUrl], LEN('/myoldurl')) = '/myoldurl'
THEN '/mynewurl' + SUBSTRING([strUrl], LEN('/myoldurl')+1, LEN([strUrl]))
ELSE [strUrl]
END
FROM [UrlRewrite]
嗨,您可以使用 STUFF 功能检查这个简单的解决方案。
DECLARE @url varchar(255)='/myoldurl/myoldurl_something_else'
SELECT STUFF(@url,CHARINDEX('old',@url,1),3,'new')
怎么样
SELECT '/mynewurl' + SUBSTRING([strUrl], LEN('/myoldurl')+1,8000) FROM [UrlRewrite]
WHERE [strUrl] LIKE '/myoldurl%'
要从字符串的开头替换,您可以过滤使用LIKE
,或者如果这不适合您的查询,请使用CASE
,SUBSTRING
并CHARINDEX
有条件地进行替换
在您的示例中,请这样做:
SELECT REPLACE([strUrl], '/myoldurl/', '/mynewurl/') FROM [UrlRewrite]