如何在SQL Server中创build一个函数

请帮助我,如何使用函数过滤SQL中的单词?

如果我解释一下,我很难过,所以我举个例子:

ID | WebsiteName | ----------------------------------- 1 | www.yahoo.com | 2 | www.google.com | 3 | www.youtube.com | 

我想要的是,如何获得网站的名称。 我想用这样的输出selectlogging。 如何删除“www”。 和“.com”的logging。

 ID | WebsiteName -------------------------- 1 | yahoo 

谢谢您的帮助。 :d

这个怎么样?

 CREATE FUNCTION dbo.StripWWWandCom (@input VARCHAR(250)) RETURNS VARCHAR(250) AS BEGIN DECLARE @Work VARCHAR(250) SET @Work = @Input SET @Work = REPLACE(@Work, 'www.', '') SET @Work = REPLACE(@Work, '.com', '') RETURN @work END 

然后使用:

 SELECT ID, dbo.StripWWWandCom (WebsiteName) FROM dbo.YourTable ..... 

当然,这是严重的限制 ,因为它只会去除www. 在开始和.com结尾 – 没有别的(所以它不会在其他主机名称,如smtp.yahoo.com和其他互联网域名,如.org.edu.de等)

这个得到了“。”之间的所有东西。 字符。 请注意,这不适用于更复杂的URL,如“www.somesite.co.uk”理想情况下,该function将检查“。”的多less个实例。 字符并相应地select子string。

 CREATE FUNCTION dbo.GetURL (@URL VARCHAR(250)) RETURNS VARCHAR(250) AS BEGIN DECLARE @Work VARCHAR(250) SET @Work = @URL SET @Work = SUBSTRING(@work, CHARINDEX('.', @work) + 1, LEN(@work)) SET @Work = SUBSTRING(@work, 0, CHARINDEX('.', @work)) --Alternate: --SET @Work = SUBSTRING(@work, CHARINDEX('.', @work) + 1, CHARINDEX('.', @work) + 1) RETURN @work END 

我可以给一个小黑客,可以使用T-SQL函数。 尝试这个:

 SELECT ID, PARSENAME(WebsiteName, 2) FROM dbo.YourTable ..... 

你可以使用replace的东西,以避免哈姆雷特Hakobyan提到的错误

 CREATE FUNCTION dbo.StripWWWandCom (@input VARCHAR(250)) RETURNS VARCHAR(250) AS BEGIN DECLARE @Work VARCHAR(250) SET @Work = @Input --SET @Work = REPLACE(@Work, 'www.', '') SET @Work = Stuff(@Work,1,4, '') SET @Work = REPLACE(@Work, '.com', '') RETURN @work END