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