Hoe maak je een functie in SQL Server

Help me alsjeblieft, hoe kan ik woorden filteren in SQL met een functie?

Ik heb het moeilijk als ik het uitleg, dus geef ik een voorbeeld:

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

Wat ik wil is, hoe krijg ik de naam van de website. Ik wil het record selecteren met een uitvoer als deze. Hoe verwijder ik de 'www.' en '.com' in het record.

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

bedankt voor de hulp :D

Oplossing

Wat denk je hiervan?

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

en dan gebruiken:

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

Natuurlijk is dit zeer beperkt in die zin dat het alleen www. aan het begin en .com aan het eind zal verwijderen - verder niets (dus het zal niet werken op andere host machine namen zoals smtp.yahoo.com en andere internet domeinen zoals .org, .edu, .de en etc.)

Commentaren (2)

Deze krijgt alles tussen de "." tekens. Merk op dat dit niet zal werken voor complexere URL's zoals "www.somesite.co.uk" Idealiter zou de functie controleren voor hoeveel gevallen van het "." karakter en dienovereenkomstig de substring kiezen.

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

Ik kan een kleine hack geven, je kunt T-SQL functie gebruiken. Probeer dit eens:

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