为什么不只是创建一个视图,而不是不断更新数据呢?没有理由必须不断地运行一项作业来去除无关信息 - 然后对它的查询只会在作业运行后立即进行。
CREATE TABLE dbo.example(URL NVARCHAR(2048));
GO
INSERT dbo.example(URL)
SELECT 'http://somesite.com/foo.asp?id=1'
UNION ALL SELECT 'http://someothersite.com/';
GO
CREATE VIEW dbo.view_example
AS
SELECT URL, StrippedURL = LEFT(URL, pos+1) +
SUBSTRING(URL, pos+2, CHARINDEX('/', URL, pos+2)-pos-1)
FROM
(
SELECT URL, CHARINDEX('//', URL) AS pos
FROM dbo.example
) AS x;
GO
SELECT URL, StrippedURL FROM dbo.view_example;
结果:
URL StrippedURL
-------------------------------- -------------------------
http://somesite.com/foo.asp?id=1 http://somesite.com/
http://someothersite.com/ http://someothersite.com/
(请注意,当前的计算假设您的 URL 总是有第三个/
。)