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
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.)
Diese Funktion erhält alles zwischen den Zeichen ".". Bitte beachten Sie, dass dies nicht für komplexere URLs wie www.somesite.co.uk" 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
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 .....