如何在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