Пожалуйста, помогите мне, как фильтровать слова в SQL с помощью функции?
Я'м, имея трудное время, если я объясню это так, Я'м даю пример:
ID | WebsiteName |
-----------------------------------
1 | www.yahoo.com |
2 | www.google.com |
3 | www.youtube.com |
Я хочу, как получить имя сайта. Я хочу выбрать записи с выходной такой. Как удалить 'www.' и '.ком' в записи.
ID | WebsiteName
--------------------------
1 | yahoo
спасибо за помощь. :Д
Как насчет этого?
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 и другие интернет-домены, такие как.орг,
.Эду,
.де и т. д.)
Это одна сделать что-то "." и символы. Обратите внимание, что это выиграл'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
Я могу дать небольшой хак, вы можете использовать функция T-SQL-кода. Попробуйте это:
SELECT ID, PARSENAME(WebsiteName, 2)
FROM dbo.YourTable .....
Вы можете использовать вещи в место замены для избежания ошибок, что Гамлет Акопян отметил
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
Это будет работать для большинства имен сайт :
Выберите ID, обратный(PARSENAME(обратного(имя_сайта), 2)) от dbo.YourTable ....
.