[SQL] T-SQL은 : 이메일 형식 검사
SQLT-SQL은 : 이메일 형식 검사
나는 실제 데이터베이스에서 데이터 무결성을 필요로이 시나리오를 가지고있다. 예를 들어, 나는 @email_address VARCHAR (200)의 변수를하고 난 @email_address의 값이 이메일 형식의 있는지 확인하고자합니다. 누군가는 T-SQL의 형식을 확인하는 방법 어떤 생각을 가지고?
많은 감사합니다!
해결법
-
==============================
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.AFAIK는이 작업을 수행하는 좋은 방법이 없습니다.
AFAIK는이 작업을 수행하는 좋은 방법이 없습니다.
이메일 형식 표준은 너무 복잡 파서의 코드 라인의 수천 실행하는 것으로 알려져 있습니다,하지만 당신은 몇 가지 불분명하지만 유효한 주소를 실패 간단한 양식을 사용했다하더라도 당신은 정규 표현식없이해야 할 것 기본적으로 같은 somethign의 간단한 대체 당신을 떠나, T-SQL (다시, 나는 그 100 %를 아니에요)에서 지원되지 않습니다 :
처럼 '%_@_%_.__%'
비슷한 .. 또는.
내 느낌은 (당신이 DB에 삽입으로) 실제로 SQL 삽입을 만드는 첫 번째 기회 및 / 또는 공통 게이트웨이 (컨트롤러에 그 일을해야하지만 마지막 가능한 순간에이 일을 shouln't하는 것이 일반적이다 당신이 정규식의 이점을 가지고, 당신을 위해 "진짜"검증을 수행 가능성도 도서관 것 부수적으로 요청).
-
==============================
3.당신은 SQL 2005 또는 2008을 사용하는 경우는 CLR 저장 proceudues를 작성보고이 같은 .NET 정규식 엔진을 사용 할 수 있습니다. 경우에 당신은 SQL 2000을 사용하는 이전 당신은 THS 같은 VBScript를 스크립팅 엔진의 정규 표현식을 사용할 수 있습니다. 또한이 같은 확장 저장 프로 시저를 사용할 수 있습니다
당신은 SQL 2005 또는 2008을 사용하는 경우는 CLR 저장 proceudues를 작성보고이 같은 .NET 정규식 엔진을 사용 할 수 있습니다. 경우에 당신은 SQL 2000을 사용하는 이전 당신은 THS 같은 VBScript를 스크립팅 엔진의 정규 표현식을 사용할 수 있습니다. 또한이 같은 확장 저장 프로 시저를 사용할 수 있습니다
-
==============================
4.T-SQL에서 할 수있는 쉬운 방법이 없다, 나는 두렵다. RFC2822에 의해 허용 된 이메일 주소의 모든 종류를 확인하려면 당신은 정규 표현식을 사용해야합니다.
T-SQL에서 할 수있는 쉬운 방법이 없다, 나는 두렵다. RFC2822에 의해 허용 된 이메일 주소의 모든 종류를 확인하려면 당신은 정규 표현식을 사용해야합니다.
여기에 더 많은 정보를 원하시면.
당신이 그것을 단순화하려는 경우, 당신의 범위를 정의해야합니다.
from https://stackoverflow.com/questions/423606/t-sql-checking-for-email-format by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] H2 데이터베이스 열 이름 "그룹은"예약 된 단어입니다 (0) | 2020.05.29 |
---|---|
[SQL] C #하는 SqlCommand - 어떻게 해결에 열 이름에 대한 매개 변수를 사용할 수없는 이유는 무엇입니까? (0) | 2020.05.29 |
[SQL] 그들이 삽입 된 정확한 순서로 반환 행 (0) | 2020.05.29 |
[SQL] 열 '메리'이 (가) 없습니다 (0) | 2020.05.29 |
[SQL] 어떤 방법 "ToString"에 대한 과부하는 1 개 인수를 (0) | 2020.05.29 |