Lütfen bana yardım edin, SQL'de bir fonksiyon kullanarak kelimeleri nasıl filtreleyebilirim?
Bunu açıklamakta zorlanıyorum, bu yüzden örnek veriyorum:
ID | WebsiteName |
-----------------------------------
1 | www.yahoo.com |
2 | www.google.com |
3 | www.youtube.com |
İstediğim şey, web sitesinin adını nasıl alacağım. Bunun gibi bir çıktı ile kaydı seçmek istiyorum. Kayıttaki 'www.' ve '.com' nasıl kaldırılır.
ID | WebsiteName
--------------------------
1 | yahoo
Yardım için teşekkürler. :D
Buna ne dersin?
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
ve sonra kullanın:
SELECT ID, dbo.StripWWWandCom (WebsiteName)
FROM dbo.YourTable .....
Tabii ki bu, yalnızca baştaki www.
ve sondaki .com
ibarelerini kaldıracağı için ciddi şekilde sınırlıdır - başka hiçbir şey yapmaz (bu nedenle smtp.yahoo.com
gibi diğer ana makine adlarında ve .org
, .edu
, .de
vb. gibi diğer internet alan adlarında çalışmaz).
Bu, "." karakterleri arasındaki her şeyi alır. Lütfen bunun "www.somesite.co.uk" gibi daha karmaşık URL'ler için çalışmayacağını unutmayın; İdeal olarak işlev "." karakterinin kaç örneği olduğunu kontrol eder ve alt dizeyi buna göre seçer.
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