我正在尝试拆分 URL 并将每个部分获取为domain
,category
等subcategory
并将每个部分插入表中。例如:
"www.mydomain.com/toolsanddownloads/dailymealplanner.html?languageid=6"
目的是在页面不存在时进行 404 重定向。我正在尝试使用 CTE 编写 SQL 语句并获取域的每个部分
;with cte AS
(
SELECT
CASE
WHEN RIGHT(RTRIM(URL),1) = '/' THEN LEFT(URL,LEN(URL)-1)
WHEN RIGHT(RTRIM(URL),5) = '.html' THEN LEFT(URL,LEN(URL)-5)
ELSE URL
END AS URL1,
StartPos = CharIndex('//', URL)+2
FROM [dbo].[404RedirectTemp]
)
SELECT URL1, SUBSTRING(URL1, 8, CHARINDEX('/', URL1, 9) - 8) AS DomainName,
REVERSE(SUBSTRING(REVERSE(URL1), CHARINDEX('?', REVERSE(URL1)) + 1,
CHARINDEX('/', REVERSE(URL1)) - CHARINDEX('?', REVERSE(URL1)) -1)) AS CategoryName,
SUBSTRING(URL1, CHARINDEX('?', URL1) + 1, LEN(URL1)) AS QueryParameter
FROM cte;
我总是得到类别名称的最后一位并且是错误的,因为某些 URL 是 http://www.mydomain.com/toolsanddownloads/dailymealplanner.html?languageid=6
一些
"www.mydomain.com/toolsanddownloads"
"www.mydomain.com/toolsanddownloads/dailymealplanner.html"
我想要实现的是,无论 URL 有多少部分,我都希望将它们全部作为列: domain
, categories
, subcategories
, brand
,product
如果域只有类别来获取类别,如果类别和子类别来获取子类别
我在临时表中有超过 4000 个 URL,我想遍历每个 URL 并更新其他表以进行 404 重定向