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
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.)
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