Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Sprawdzanie poprawności adresu e-mail w serwerze sql 2008?

Oto przykład tworzenia tabeli z określonymi regułami dla poczty z adresem (regexp). Następnie przykład ze wzorcem zapytania sql (Regexp). Dzięki temu powinieneś być w stanie robić, co chcesz

Utwórz tabelę z wyrażeniem regularnym

create table Contacts (
FirstName nvarchar(30),
LastName nvarchar(30),
EmailAddress nvarchar(30) CHECK (dbo.RegExMatch('[a-zA-Z0-9_\-][email protected]([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz)', EmailAddress)=1),
USPhoneNo nvarchar(30) CHECK (dbo.RegExMatch('\([1-9][0-9][0-9]\) [0-9][0-9][0-9]\-[0-9][0-9][0-9][0-9]', UsPhoneNo)=1))
INSERT INTO [talend].[dbo].[Contacts]
([FirstName]
,[LastName]
,[EmailAddress]
,[USPhoneNo])
VALUES
('Hallam'
,'Amine'
,'[email protected]’
,'0129-2090-1092')
,( 'encoremoi'
,'nimportequoi'
,'[email protected]'
,'(122) 190-9090')
GO

Wykonaj żądanie sql z wyrażeniem regularnym

SELECT [FirstName]
,[LastName]
,[EmailAddress]
,[USPhoneNo]
FROM [talend].[dbo].[Contacts]
where [talend].[dbo].RegExMatch([EmailAddress],'[a-zA-Z0-9_\-][email protected]([a-zA-Z0-9_\-]+\.)+(com|org|edu|nz|au)') = 1

Kod funkcji

using System;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;
public partial class RegExBase
{
[SqlFunction(IsDeterministic = true, IsPrecise = true)]
public static int RegExMatch( string matchString , string pattern)
{
Regex r1 = new Regex(pattern.TrimEnd(null));
if (r1.Match(matchString.TrimEnd(null)).Success == true)
{
return 1 ;
}
else
{
return 0 ;
}
}
};

Więcej informacji znajdziesz tutaj samouczek ->

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Obrót wielu kolumn w T-SQL

  2. SQL Jak zaktualizować SUMA kolumny nad grupą w tej samej tabeli

  3. JPA SET IDENTITY_INSERT nie działa

  4. Jaka jest prawidłowa nazwa tabeli asocjacji (relacja wiele-do-wielu)

  5. Klucz obcy SQL Server do wielu tabel