Wie man eine Funktion in SQL Server erstellt

Bitte helfen Sie mir, wie ich mit einer Funktion Wörter in SQL filtern kann?

I'm mit eine harte Zeit, wenn ich es erklären, so I'm geben Beispiel:

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

Was ich möchte, ist, wie ich den Namen der Website bekomme. Ich möchte den Datensatz mit einer Ausgabe wie dieser auswählen. Wie kann ich das 'www.' und '.com' im Datensatz entfernen.

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

danke für die Hilfe :D

Lösung

Wie wäre es damit?

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

und dann verwenden:

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

Natürlich ist dies sehr eingeschränkt, da es nur www. am Anfang und .com am Ende entfernt - sonst nichts (also funktioniert es nicht bei anderen Hostnamen wie smtp.yahoo.com und anderen Internetdomänen wie .org, .edu, .de usw.)

Kommentare (2)

Diese Funktion erhält alles zwischen den Zeichen ".". Bitte beachten Sie, dass dies nicht für komplexere URLs wie www.somesite.co.uk&quot funktioniert. Idealerweise würde die Funktion prüfen, wie viele Instanzen des Zeichens "." vorhanden sind und die Teilzeichenkette entsprechend auswählen.

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

Ich kann einen kleinen Hack geben, Sie können eine T-SQL-Funktion verwenden. Versuchen Sie dies:

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