如何在SQL Server中创建函数

meg*_*001 61 sql-server-2008

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

如果我解释它,我会很难,所以我举个例子:

ID       |       WebsiteName      |
-----------------------------------
1        |      www.yahoo.com     |
2        |      www.google.com    |
3        |      www.youtube.com   |
Run Code Online (Sandbox Code Playgroud)

我想要的是,如何获得网站的名称.我想用这样的输出选择记录.如何删除'www.' 和'.com'在记录中.

ID      |      WebsiteName
--------------------------    
1       |        yahoo
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.:d

mar*_*c_s 109

这个怎么样?

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
Run Code Online (Sandbox Code Playgroud)

然后使用:

SELECT ID, dbo.StripWWWandCom (WebsiteName)
FROM dbo.YourTable .....
Run Code Online (Sandbox Code Playgroud)

当然,这是严格限制的,因为它只会剥夺www.在开始和.com结束时-没有别的(所以它不会对其他主机的名称,如工作smtp.yahoo.com与其他互联网领域,例如.org,.edu,.de等)

  • 代码中有错误.请尝试使用`www.somethingwww.com`. (29认同)
  • 你可以像这样使用`STUFF`和`CHARINDEX`:`SET @Work = STUFF(@Work, CHARINDEX('www.', @Work), LEN('www.'), '')` (2认同)

小智 13

这个得到了"."之间的一切.字符.请注意,这不适用于更复杂的网址,例如"www.somesite.co.uk".理想情况下,该功能会检查"."的实例数.字符并相应地选择子字符串.

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
Run Code Online (Sandbox Code Playgroud)


Ham*_*yan 8

我可以给一个小黑客,你可以使用T-SQL功能.试试这个:

SELECT ID, PARSENAME(WebsiteName, 2)
FROM dbo.YourTable .....
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以使用替代品来避免Hamlet 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
Run Code Online (Sandbox Code Playgroud)