我有一些数据需要在我的数据库中重写。 我正在尝试将完整的网址转换为相对网址。所以基本上我需要去更改所有“ https://www.website.com/uploads/images/1dhe5d5B56.jpg”的出现 更像是“ uploads / images / 1dhe5d5B56.jpg”。
我知道有replace(),但不确定是否可以将其用于更新而不是选择。有什么想法吗?
答案 0 :(得分:1)
是的,您可以将REPLACE
与UPDATE
结合使用:
UPDATE tab
SET col = REPLACE(REPLACE(col,'https://www.website.com/uploads/images','|place|')
,'|place|', 'uploads/images')
WHERE col LIKE '%https://www.website.com/uploads/images/%';
标准Replace([ColumWithUrl], 'https://www.website.com/', '')
可能会替换过多的值,例如https://www.website.com/index.html
。
针对:
Index: https://www.website.com/index.html
https://www.website.com/uploads/images/1dhe5d5B56.jpg
and second https://www.website.com/uploads/images/xyz.jpg
=>
Index: https://www.website.com/index.html
uploads/images/1dhe5d5B56.jpg
and second uploads/images/xyz.jpg
答案 1 :(得分:1)
您可以在更新中使用替换。不过要小心!如果只是您问题中的简单替换,那么:
Update [YourTable]
set [ColumWithUrl] = Replace([ColumWithUrl], 'https://www.website.com/', '')
您还可以指定要用WHERE
更新的行。对于该网站的所有网址:
Update [YourTable]
set [ColumWithUrl] = Replace([ColumWithUrl], 'https://www.website.com/', '')
where [ColumWithUrl] like 'https://www.website.com/%'
或仅适用于图像网址:
Update [YourTable]
set [ColumWithUrl] = Replace([ColumWithUrl], 'https://www.website.com/', '')
where [ColumWithUrl] like 'https://www.website.com/uploads/images/%'
答案 2 :(得分:0)
substring()
之后的第一个'/'
开始 '//'
。使用charindex()
获取位置。
substring(url,
charindex('/',
url,
charindex('//',
url)
+ 2),
len(url)
-
charindex('/',
url,
charindex('//',
url)
+ 2)
+ 1)
或者使用replace()
删除'http://'
和'https://'
(如果它们只是在开头,对于合理的URL应该是这样),并删除第一个{{1} }。
'/'
编辑:
嗯,我可能错过了,URL是否可能嵌入其他文本中?这个问题对我来说还不清楚。如果是这样,我的解决方案当然只是部分使用(如果有)。也许可以澄清网址是否是嵌入式的。