Por favor, ajude-me, como filtrar palavras em SQL usando uma função?
I'estou tendo dificuldades se eu explicar isso, então I'estou dando o exemplo:
ID | WebsiteName |
-----------------------------------
1 | www.yahoo.com |
2 | www.google.com |
3 | www.youtube.com |
O que eu quero é, como conseguir o nome do site. Eu quero selecionar o registro com uma saída como esta. Como remover o 'www.' e '.com' no disco.
ID | WebsiteName
--------------------------
1 | yahoo
obrigado pela ajuda. :D
Que tal isto?
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
e depois usar:
SELECT ID, dbo.StripWWWandCom (WebsiteName)
FROM dbo.YourTable .....
Claro, isto é severdamente limitado, na medida em que apenas tira wwww.
no início e .com
no final - nada mais (por isso ganhou'não funciona em outros nomes de máquinas host como smtp.yahoo.com
e outros domínios de internet como .org
, .edu
, .de
e etc.)
Este aqui fica tudo entre os "." personagens. Por favor note que este won't funciona para URLs mais complexas como "www.somesite.co.uk" Idealmente a função verificaria quantas instâncias do "." caractere e escolheria o substrato de acordo.
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