함수를 사용하여 SQL에서 단어를 필터링하는 방법을 알려주세요.
설명하는 데 어려움을 겪고 있으므로 예를 들어 보겠습니다:
ID | WebsiteName |
-----------------------------------
1 | www.yahoo.com |
2 | www.google.com |
3 | www.youtube.com |
제가 원하는 것은 웹사이트의 이름을 얻는 방법입니다. 다음과 같은 출력을 가진 레코드를 선택하고 싶습니다. 레코드에서 'www.' 및 '.com' 을 제거하는 방법.
ID | WebsiteName
--------------------------
1 | yahoo
도와주셔서 감사합니다. :D
이건 어때요?
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
를 클릭한 다음 사용합니다:
SELECT ID, dbo.StripWWWandCom (WebsiteName)
FROM dbo.YourTable .....
물론 이 방법은 시작 부분의 www.
와 끝 부분의 .com
만 제거할 뿐 다른 것은 제거하지 않는다는 점에서 **심하게 제한적입니다(따라서 smtp.yahoo.com
과 같은 다른 호스트 머신 이름이나 .org
, .edu
, .de
등과 같은 기타 인터넷 도메인에서는 작동하지 않습니다).
이 함수는 &'.&' 문자 사이의 모든 것을 가져옵니다. www.somesite.co.uk"]와 같이 더 복잡한 URL에서는 작동하지 않습니다. 이상적으로는 이 함수가 <.&> 문자의 인스턴스 수를 확인하고 그에 따라 하위 문자열을 선택하는 것이 좋습니다.
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
그 대신 사용할 수 있습니다 햄릿 코비안 복귀시킴 방지하기 위한 언급한 바 있는 버그
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 = Stuff(@Work,1,4, '')
SET @Work = REPLACE(@Work, '.com', '')
RETURN @work
END