Tôi đã thử nghiệm truy vấn sau với nhiều địa chỉ email sai và hợp lệ khác nhau. Nó nên thực hiện công việc.
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 protected]',@email_address) = 0 AND CHARINDEX('..',@email_address) = 0)
)
print 'valid email address'
ELSE
print 'not valid'
Nó kiểm tra các điều kiện:
- Không có dấu cách nhúng
- '@' không thể là ký tự đầu tiên của một địa chỉ email
- '' không được là ký tự cuối cùng của địa chỉ email
- Phải có dấu '.' ở đâu đó sau '@'
- dấu '@' được phép
- tên miền nên kết thúc với phần mở rộng nhân vật ít nhất 2
- không thể có các mẫu như '@' và '..'
có thể trùng lặp của [Sql script để tìm địa chỉ email không hợp lệ] (http://stackoverflow.com/questions/801166/sql-script-to-find-invalid-email-addresses) – Neolisk