Подтвердить что ты не робот

Как создать функцию в SQL Server

Пожалуйста, помогите мне, как фильтровать слова в SQL с помощью функции?

Мне сложно, если я объясню это, я приведу пример:

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

Я хочу, как получить имя веб-сайта. Я хочу выбрать запись с выходом вроде этого. Как удалить "www." и ".com" в записи.

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

спасибо за помощь.: D

4b9b3361

Ответ 1

Как насчет этого?

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 и т.д.)

Ответ 2

Этот получает все, что находится между "." персонажи. Обратите внимание, что это не будет работать для более сложных URL-адресов, таких как "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

Ответ 3

Я могу дать небольшой взлом, вы можете использовать функцию T-SQL. Попробуйте следующее:

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

Ответ 4

Вы можете использовать материал вместо замены, чтобы избежать ошибки, о которой упоминал Гамлет Акопян

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

Ответ 5

Это будет работать для большинства имен веб-сайтов:

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