Comment créer une fonction dans SQL Server

Aidez-moi, s'il vous plaît, comment filtrer des mots en SQL en utilisant une fonction ?

J'ai du mal à l'expliquer, alors je donne un exemple :

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

Ce que je veux, c'est obtenir le nom du site web. Je veux sélectionner l'enregistrement avec une sortie comme celle-ci. Comment supprimer les caractères 'www.&#39 ; et &#39 ;.com&#39 ; dans l'enregistrement.

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

merci pour votre aide :D

Solution

Que pensez-vous de ça ?

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

et ensuite utiliser :

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

Bien sûr, cette méthode est sévèrement limitée dans la mesure où elle ne supprimera que www. au début et .com à la fin - rien d'autre (elle ne fonctionnera donc pas sur d'autres noms de machines hôtes comme smtp.yahoo.com et d'autres domaines Internet comme .org, .edu, .de, etc.)

Commentaires (2)

Celle-ci récupère tout ce qui se trouve entre les caractères &quot ;.&quot ;. Veuillez noter que cela ne fonctionnera pas pour les URL plus complexes comme "www.somesite.co.uk&quot ; Idéalement, la fonction devrait vérifier le nombre d'occurrences du caractère &quot ;.&quot ; et choisir la sous-chaîne en conséquence.

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

Je peux vous donner une petite astuce, vous pouvez utiliser la fonction T-SQL. Essayez ceci :

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