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か、それがクエリに適していない場合は を使用してCASE、条件付きで置換を行うことができますSUBSTRINGCHARINDEX

于 2012-07-05T07:46:19.990 に答える