提问人:ME_2023 提问时间:8/3/2023 最后编辑:Parking MasterME_2023 更新时间:8/15/2023 访问量:82
提取某个字符之前的文本的 URL 部分
Extract URL part of Text before a certain character
问:
我正在尝试从这些字符串中提取主机名,即第一个 % 符号之前的所有内容。
必须提取第一个 % 符号之前的 URL(粗体部分),我尝试使用 MID、SUBSTRING、CHARINDEX、LEFT 和 LEN,但都弄糊涂了。
这是代码(底部是我的尝试之一)。
DROP TABLE IF EXISTS #temp2;
CREATE TABLE #temp2 (url_link VARCHAR(2500));
INSERT INTO #temp2 (url_link)
VALUES
('az.account.box.com%2fsignup%2fcoll'),
('az.account.box.com%2fsignup%2fcollab%2f6kn7988x7i%3fbox_source%3dlegacy-external_collab_email%26amp%3bbox_action%3dclick_button'),
('app.box.com%2ffile%2f1105756887416%3fsb%3d%2factivity%2fcomments%2f515200504%26comment_id%3d515200504'),
('evelyn.sharefile.eu%2ff%2ffo292663-12a3-437f-8ec4-17a8f49ba4b6%3fa%3dc23e44cbd721d386'),
('app.box.com%2f'),
('app.box.com%2ffolder%2f0'),
('www.evernote.com%2fLogin.action');
SELECT
url_link,
CHARINDEX('%', url_link) AS [Pos%Char],
LEFT(url_link, CHARINDEX('%', url_link) - 1) AS ExtractedHostname
FROM #temp2;
答:
1赞
Aswin P.M
8/12/2023
#1
您使用 LEFT 函数提取 % 符号之前的子字符串,但您需要从长度中减去 1 以排除 % 符号本身。下面是 SQL 查询的更正版本:
SELECT
url_link,
CHARINDEX('%', url_link) AS [Pos%Char],
LEFT(url_link, CHARINDEX('%', url_link) - 1) AS ExtractedHostname
FROM #temp2;
评论