替换SQL中的字符串开头

时间:2012-07-05 07:38:27

标签: sql sql-server

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

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

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

5 个答案:

答案 0 :(得分: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]

答案 1 :(得分:4)

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

DECLARE @url varchar(255)='/myoldurl/myoldurl_something_else' 
SELECT STUFF(@url,CHARINDEX('old',@url,1),3,'new')

答案 2 :(得分:2)

怎么样

SELECT '/mynewurl' + SUBSTRING([strUrl], LEN('/myoldurl')+1,8000) FROM [UrlRewrite]
WHERE [strUrl] LIKE '/myoldurl%'

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在你的例子中,justo那样做:

ServerCall.close()