Cómo crear una función en SQL Server

Por favor, ayúdenme, ¿cómo filtrar palabras en SQL usando una función?

I'm teniendo un tiempo difícil si lo explico por lo que I'm dando ejemplo:

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

Lo que quiero es, como obtener el nombre de la página web. Quiero seleccionar el registro con una salida como esta. Cómo eliminar el 'www.' y '.com' en el registro.

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

gracias por la ayuda. :D

Solución

¿Qué te parece esto?

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

y luego usar:

SELECT ID, dbo.StripWWWandCom (WebsiteName)
FROM dbo.YourTable .....

Por supuesto, esto es severamente limitado en el sentido de que sólo eliminará www. al principio y .com al final - nada más (por lo que no funcionará en otros nombres de máquinas anfitrionas como smtp.yahoo.com y otros dominios de Internet como .org, .edu, .de y etc.)

Comentarios (2)

Este obtener todo entre el "." caracteres. Tenga en cuenta que esto won't trabajo para las direcciones URL más complejas como "www.somesite.co.uk" Idealmente, la función sería comprobar para cuántas instancias de la "." carácter y elegir la subcadena en consecuencia.

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
Comentarios (0)

Puedo dar un pequeño truco, puede utilizar la función T-SQL. Pruebe esto:

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