SQL Server에서 이메일 주소 검증하기 > db

본문 바로가기
사이트 내 전체검색

db

SQL Server에서 이메일 주소 검증하기

페이지 정보

작성자 서방님 댓글 0건 조회 103회 작성일 08-03-27 14:15

본문

SQL Server에서 이메일 주소 검증하기


SQL Server에서는 Regular Expression 기능을 제공하기 않기 때문에 정밀하게 이메일 주소를 검증 하기는 곤란합니다. SQL 사용자 함수를 이용해서 간단하게 이메일 주소를 검증합니다.


아래 함수는 한참 전에 모 사이트에서 받아 놓은 스크립트 인데 그 사이트가 어디 인지는 잘 모르겠습니다.
약간 변경하여 올립니다.


이메일 검증 사용자 정의 함수

CREATE FUNCTION ufn_EmailValidate (@email varChar(100))
RETURNS int
AS
BEGIN

DECLARE @invalChars varchar(5), @valid int, @badChar varchar(1), @atPos int, @periodPos int
SET @valid = 1
-- 이메일에 불필요한 문자를 @invalChars 변수에 추가합니다.
SET @invalChars = ' /:,;'

--이메일 주소 길이가 0인지 점검
IF len(ltrim(rtrim(@email))) = 0
    SET @valid = 0
ELSE
    --이메일 안에 부적절한 문자가 있는지 찾기 위해 반복
    WHILE len(@invalChars) > 0
    BEGIN
        -- 이메일에서 불필요한 문자를 @badChar 변수에 하나씩 담고 검사한다.
        SET @badChar = substring(@invalChars, 1, 1)
        --부적절한 문자를 발견하면 리턴 값 0으로 설정
        IF (charindex(@badChar, @email) > 0)
            SET @valid = 0
        -- 불필요한 문자를 하나씩 없앤다
        SET @invalChars = replace(@invalChars, @badChar, '')
    END

    --@문자가 있는지 점검
    SET @atPos = charindex('@', @email, 1)
    IF @atPos = 0
        SET @valid = 0

    --첫번째 '@' 이후에 또 다른 '@' 문자가 있는지 점검
    IF charindex('@', @email, @atPos+1) > 0
        SET @valid = 0

    -- '@' 문자 다음에 '.' 문자가 있는지 검사
    SET @periodPos = charindex('.', @email, @atPos)
    IF @periodPos = 0
        SET @valid = 0
    -- 이메일 길이 비교
    IF (@periodPos+3) > len(@email)
        SET @valid = 0

RETURN (@valid)

END




함수 실행

-- 특정 이메일 주소 검증
SELECT dbo.ufn_EmailValidate('xxxx@ilovedata.net')

-- 테이블에서 잘못된 이메일 추출
SELECT * FROM Table_Name WHERE dbo.ufn_EmailValidate(Email field) = 0

-- 잘못된 이메일 주소 삭제
DELETE FROM Table_Name WHERE dbo.ufn_EmailValidate(Email field) = 0


댓글목록

등록된 댓글이 없습니다.

Total 464건 19 페이지
게시물 검색

회원로그인

접속자집계

오늘
129
어제
225
최대
1,347
전체
154,888
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.