Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Xác thực email TSQL (không có regex)

Rất cơ bản sẽ là:

SELECT
  EmailAddress, 
  CASE WHEN EmailAddress LIKE '%[email protected]_%_.__%' 
            AND EmailAddress NOT LIKE '%[any obviously invalid characters]%' 
  THEN 'Could be' 
  ELSE 'Nope' 
  END Validates
FROM 
  Table

Điều này khớp với mọi thứ có ký tự @ ở giữa, đứng trước ít nhất một ký tự, theo sau là ít nhất hai, một dấu chấm và ít nhất hai cho TLD.

Bạn có thể viết thêm LIKE những mẫu thực hiện những việc cụ thể hơn, nhưng bạn sẽ không bao giờ có thể đối sánh mọi thứ có thể là địa chỉ e-mail trong khi không để lọt những thứ không phải vậy. Ngay cả với biểu thức chính quy, bạn cũng gặp khó khăn khi làm đúng. Ngoài ra, ngay cả việc so khớp theo các chữ cái của RFC cũng khớp với các cấu trúc địa chỉ sẽ không được hầu hết các hệ thống gửi email chấp nhận / sử dụng.

Thực hiện điều này ở cấp độ cơ sở dữ liệu dù sao cũng có thể là cách tiếp cận sai, vì vậy, kiểm tra độ tỉnh táo cơ bản như đã nêu ở trên có thể là cách tốt nhất bạn có thể có được về hiệu suất và thực hiện nó trong một ứng dụng sẽ cung cấp cho bạn sự linh hoạt hơn nhiều.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Điều chỉnh SQL Server - tất cả là về đo lường

  2. Kiểm tra tình trạng máy chủ SQL chủ động, Phần 4:LỖI

  3. Chỉ kích hoạt cập nhật SQL khi cột được sửa đổi

  4. Cách trả về số nhóm tăng dần trên mỗi nhóm trong SQL

  5. Lỗi CTE:Các loại không khớp giữa phần neo và phần đệ quy