"줄기"가 모두 '?'로 끝나면 또는 '/?'를 사용하면 이것을 사용할 수 있습니다. 추가 절단 패턴은 필요한 경우 CASE 문에 추가 할 수 있습니다.
DECLARE @test TABLE (URL varchar(3000))
INSERT INTO @test (URL) VALUES ('http://a.com')
INSERT INTO @test (URL) VALUES ('http://b.au')
INSERT INTO @test (URL) VALUES ('http://c.edu?a=3')
INSERT INTO @test (URL) VALUES ('http://d.com/?a=3')
INSERT INTO @test (URL) VALUES ('http://d.com/?a=3&b=2')
INSERT INTO @test (URL) VALUES ('http://d.com/?a=3&b=2')
SELECT SUBSTRING(URL, 0,
CASE
WHEN PATINDEX('%/?%', URL) > 0 THEN PATINDEX('%/?%', URL)
WHEN PATINDEX('%?%', URL) > 0 THEN PATINDEX('%?%', URL)
ELSE LEN(URL) + 1
END), COUNT(*)
FROM @test
GROUP BY SUBSTRING(URL, 0,
CASE
WHEN PATINDEX('%/?%', URL) > 0 THEN PATINDEX('%/?%', URL)
WHEN PATINDEX('%?%', URL) > 0 THEN PATINDEX('%?%', URL)
ELSE LEN(URL) + 1
END)
순수한 T-SQL에서이를 수행하려면이 방법이 필요합니다. 그러나 원하는 최종 상태에 따라 응용 프로그램 또는 프리젠 테이션 레이어에서 문자열 서식을 수행하는 것이 좋습니다. 문자열 형식은 단순히 SQL의 장점 중 하나가 아닙니다. – TimothyAWiseman