sql判断Email和用户名

sql语句判断Email格式和用户名中不能有特殊字符(用户名只包含字母、数字、下划线)的语句怎么写
SELECT  email_address
 
   FROM  email
 
  WHERE  REGEXP_LIKE (email_address,'[a-zA-Z0-9._%-]+@[a-zA-Z0-9._%-]+\.[a-zA-Z]{2,4}');

或者:
select id       , name       , email  from t_superheros  where regexp_like        (email        ,'^\w+(\.\w+)*+@\w+(\.\w+)+$');
SELECT
  EmailAddress, 
  CASE WHEN EmailAddress LIKE '%_@_%_.__%' 
            AND EmailAddress NOT LIKE '%[any obviously invalid characters]%' 
  THEN 'Could be' 
  ELSE 'Nope' 
  END Validates
FROM 
  Table

[any obviously invalid characters]这个填写你不要的字符。

AS BEGIN
DECLARE @AlphabetPlus VARCHAR(255)
      , @Max INT -- Length of the address
      , @Pos INT -- Position in @EmailAddr
      , @OK BIT  -- Is @EmailAddr OK
-- Check basic conditions
IF @EmailAddr IS NULL 
   OR NOT @EmailAddr LIKE '_%@__%.__%' 
   OR CHARINDEX(' ',LTRIM(RTRIM(@EmailAddr))) > 0
       RETURN(0)
SELECT @AlphabetPlus = 'abcdefghijklmnopqrstuvwxyz01234567890_-.@'
     , @Max = LEN(@EmailAddr)
     , @Pos = 0
     , @OK = 1
WHILE @Pos < @Max AND @OK = 1 BEGIN
    SET @Pos = @Pos + 1
    IF NOT @AlphabetPlus LIKE '%' 
                             + SUBSTRING(@EmailAddr, @Pos, 1) 
                             + '%' 
        SET @OK = 0
END -- WHILE
RETURN @OK
END
go
  
GRANT EXEC on dbo.udf_txt_isEmail to PUBLIC
go

本文将介绍在SQL Server 2005中使用正则表达式的情况,大家可以一步一步的学习。

AD:

 

CLR用户定义函数只是在.NET 程序集中定义的静态方法。CREATE FUNCTION 语句已扩展为支持创建 CLR 用户定义函数。

1、创建数据库项目

sql判断Email和用户名_第1张图片

 

2、添加用户定义函数

sql判断Email和用户名_第2张图片

以下是演示代码:

Code
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text.RegularExpressions;

// 示意代码
public partial class UserDefinedFunctions
{
public static readonly RegexOptions Options =

RegexOptions.IgnorePatternWhitespace | RegexOptions.Singleline;

[Microsoft.SqlServer.Server.SqlFunction]
public static string RegexValue(SqlChars input, SqlString pattern)
{
Regex regex = new Regex(pattern.Value, Options);

return  regex.Match(new string(input.Value)).Value;
}
}

3、将自定义函数关联到数据库

sql判断Email和用户名_第3张图片

4、Sql 查询分析器

sql判断Email和用户名_第4张图片

为了确保SQL可以执行托管代码,执行下面的语句:

EXEC sp_configure 'clr enabled', 1

sql 如下:
select dbo.RegexValue('2008-09-02',N'\d{4}') from Table

============================================= 

你可能感兴趣的:(sql判断Email和用户名)