복붙노트

[SQL] T-SQL은 : 이메일 형식 검사

SQL

T-SQL은 : 이메일 형식 검사

나는 실제 데이터베이스에서 데이터 무결성을 필요로이 시나리오를 가지고있다. 예를 들어, 나는 @email_address VARCHAR (200)의 변수를하고 난 @email_address의 값이 이메일 형식의 있는지 확인하고자합니다. 누군가는 T-SQL의 형식을 확인하는 방법 어떤 생각을 가지고?

많은 감사합니다!

해결법

  1. ==============================

    1.나는 많은 다른 잘못하고 유효한 이메일 주소를 다음 쿼리를 테스트했다. 이 작업을 수행해야합니다.

    나는 많은 다른 잘못하고 유효한 이메일 주소를 다음 쿼리를 테스트했다. 이 작업을 수행해야합니다.

    IF (
         CHARINDEX(' ',LTRIM(RTRIM(@email_address))) = 0 
    AND  LEFT(LTRIM(@email_address),1) <> '@' 
    AND  RIGHT(RTRIM(@email_address),1) <> '.' 
    AND  CHARINDEX('.',@email_address ,CHARINDEX('@',@email_address)) - CHARINDEX('@',@email_address ) > 1 
    AND  LEN(LTRIM(RTRIM(@email_address ))) - LEN(REPLACE(LTRIM(RTRIM(@email_address)),'@','')) = 1 
    AND  CHARINDEX('.',REVERSE(LTRIM(RTRIM(@email_address)))) >= 3 
    AND  (CHARINDEX('.@',@email_address ) = 0 AND CHARINDEX('..',@email_address ) = 0)
    )
       print 'valid email address'
    ELSE
       print 'not valid'
    

    그것은 이러한 조건을 확인합니다 :

  2. ==============================

    2.AFAIK는이 작업을 수행하는 좋은 방법이 없습니다.

    AFAIK는이 작업을 수행하는 좋은 방법이 없습니다.

    이메일 형식 표준은 너무 복잡 파서의 코드 라인의 수천 실행하는 것으로 알려져 있습니다,하지만 당신은 몇 가지 불분명하지만 유효한 주소를 실패 간단한 양식을 사용했다하더라도 당신은 정규 표현식없이해야 할 것 기본적으로 같은 somethign의 간단한 대체 당신을 떠나, T-SQL (다시, 나는 그 100 %를 아니에요)에서 지원되지 않습니다 :

    처럼 '%_@_%_.__%'

    비슷한 .. 또는.

    내 느낌은 (당신이 DB에 삽입으로) 실제로 SQL 삽입을 만드는 첫 번째 기회 및 / 또는 공통 게이트웨이 (컨트롤러에 그 일을해야하지만 마지막 가능한 순간에이 일을 shouln't하는 것이 일반적이다 당신이 정규식의 이점을 가지고, 당신을 위해 "진짜"검증을 수행 가능성도 도서관 것 부수적으로 요청).

  3. ==============================

    3.당신은 SQL 2005 또는 2008을 사용하는 경우는 CLR 저장 proceudues를 작성보고이 같은 .NET 정규식 엔진을 사용 할 수 있습니다. 경우에 당신은 SQL 2000을 사용하는 이전 당신은 THS 같은 VBScript를 스크립팅 엔진의 정규 표현식을 사용할 수 있습니다. 또한이 같은 확장 저장 프로 시저를 사용할 수 있습니다

    당신은 SQL 2005 또는 2008을 사용하는 경우는 CLR 저장 proceudues를 작성보고이 같은 .NET 정규식 엔진을 사용 할 수 있습니다. 경우에 당신은 SQL 2000을 사용하는 이전 당신은 THS 같은 VBScript를 스크립팅 엔진의 정규 표현식을 사용할 수 있습니다. 또한이 같은 확장 저장 프로 시저를 사용할 수 있습니다

  4. ==============================

    4.T-SQL에서 할 수있는 쉬운 방법이 없다, 나는 두렵다. RFC2822에 의해 허용 된 이메일 주소의 모든 종류를 확인하려면 당신은 정규 표현식을 사용해야합니다.

    T-SQL에서 할 수있는 쉬운 방법이 없다, 나는 두렵다. RFC2822에 의해 허용 된 이메일 주소의 모든 종류를 확인하려면 당신은 정규 표현식을 사용해야합니다.

    여기에 더 많은 정보를 원하시면.

    당신이 그것을 단순화하려는 경우, 당신의 범위를 정의해야합니다.

  5. from https://stackoverflow.com/questions/423606/t-sql-checking-for-email-format by cc-by-sa and MIT license