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

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

Я'м, имея трудное время, если я объясню это так, Я'м даю пример:

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

Я хочу, как получить имя сайта. Я хочу выбрать записи с выходной такой. Как удалить 'www.' и '.ком' в записи.

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

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

Комментарии к вопросу (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 .....

Конечно, это сильно ограничены в том, что он будет только полосы ВСП. в начале и .ком в конце - ничего (поэтому он выиграл't работа на другие имена хост-машине нравится smtp.yahoo.com и другие интернет-домены, такие как.орг,.Эду,.де и т. д.)

Комментарии (2)

Это одна сделать что-то "." и символы. Обратите внимание, что это выиграл't работа для более сложных 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
Комментарии (0)

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

SELECT ID, PARSENAME(WebsiteName, 2)
FROM dbo.YourTable .....
Комментарии (0)

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

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
Комментарии (0)

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

Выберите ID, обратный(PARSENAME(обратного(имя_сайта), 2)) от dbo.YourTable .....

Комментарии (0)