3
SELECT REPLACE([strUrl], '/myoldurl', '/mynewurl') FROM [UrlRewrite]

如果strUrl/myoldurl/myoldurl_something_else,则返回/mynewurl/mynewurl_something_else。我希望它是/mynewurl/myoldurl_something_else

如何从 SQL 中的字符串开头替换?

4

5 回答 5

5
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]
于 2012-07-05T07:39:37.100 回答
4

嗨,您可以使用 STUFF 功能检查这个简单的解决方案。

DECLARE @url varchar(255)='/myoldurl/myoldurl_something_else' 
SELECT STUFF(@url,CHARINDEX('old',@url,1),3,'new')
于 2012-07-05T12:59:04.017 回答
2

怎么样

SELECT '/mynewurl' + SUBSTRING([strUrl], LEN('/myoldurl')+1,8000) FROM [UrlRewrite]
WHERE [strUrl] LIKE '/myoldurl%'
于 2012-07-05T07:44:46.440 回答
0

要从字符串的开头替换,您可以过滤使用LIKE,或者如果这不适合您的查询,请使用CASESUBSTRINGCHARINDEX有条件地进行替换

于 2012-07-05T07:46:19.990 回答
0

在您的示例中,请这样做:

SELECT REPLACE([strUrl], '/myoldurl/', '/mynewurl/') FROM [UrlRewrite]
于 2017-10-30T22:33:56.663 回答