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.' ; et ' ;.com' ; dans l'enregistrement.
ID | WebsiteName
--------------------------
1 | yahoo
merci pour votre aide :D
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.)
Celle-ci récupère tout ce qui se trouve entre les caractères " ;." ;. Veuillez noter que cela ne fonctionnera pas pour les URL plus complexes comme "www.somesite.co.uk" ; Idéalement, la fonction devrait vérifier le nombre d'occurrences du caractère " ;." ; 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