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

Chức năng xác minh email SQL sử dụng Regex

Câu trả lời ngắn gọn là không, nó không thể được thực hiện. Cú pháp cho THÍCH không giống như (và ít mạnh mẽ hơn) các biểu thức chính quy. Xem thêm SQL Server Biểu thức chính quy trong T-SQL

Nhưng bạn có thể chuyển sang .Net và thực hiện khớp ở đó. Bạn có thể khởi tạo một VBScript.RegExp bên trong T-SQL bằng cách sử dụng sp_OACreate và sử dụng nó.

CREATE FUNCTION dbo.isValidEmailFormat
(
    @Email varchar(100)
)
RETURNS bit
AS
BEGIN
    DECLARE @pattern varchar(4000)
    SET @pattern = '[a-zA-Z0-9_\-][email protected]([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz|au)'
    DECLARE @Result bit

    DECLARE @objRegexExp INT
    EXEC sp_OACreate 'VBScript.RegExp', @objRegexExp OUT

    EXEC sp_OASetProperty @objRegexExp, 'Pattern', @pattern
    EXEC sp_OASetProperty @objRegexExp, 'IgnoreCase', 1
    EXEC sp_OASetProperty @objRegexExp, 'MultiLine', 0
    EXEC sp_OASetProperty @objRegexExp, 'Global', false
    EXEC sp_OASetProperty @objRegexExp, 'CultureInvariant', true

    EXEC sp_OAMethod @objRegexExp, 'Test', @Result OUT, @Email

    EXEC sp_OADestroy @objRegexExp

    RETURN @Result
END

Hãy xem qua Lỗi xác minh email Regex - sử dụng JavaScript để xem bạn có muốn hạn chế hơn một chút về những ký tự được phép hay không.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cập nhật tất cả các giá trị SQL NULL trong nhiều cột bằng mệnh đề WHERE cấp cột?

  2. phân tách các giá trị được phân tách bằng dấu phẩy và lưu trữ trong bảng trong máy chủ sql

  3. Cách hiểu về kiểu dữ liệu địa lý của máy chủ SQL

  4. Hàm ý của nvarchar (50) so với nvarchar (tối đa)

  5. Chuỗi kết nối ADO.NET