首页 新闻 会员 周边 捐助

sql判断Email和用户名

0
[已解决问题] 解决于 2012-05-08 21:47

sql语句判断Email格式和用户名中不能有特殊字符(用户名只包含字母、数字、下划线)的语句怎么写

静儿~的主页 静儿~ | 菜鸟二级 | 园豆:216
提问于:2012-05-07 09:01
< >
分享
最佳答案
0
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+)+$');
 
奖励园豆:5
悟行 | 专家六级 |园豆:12559 | 2012-05-07 09:08

regexp_like只能在Oracle中使用

静儿~ | 园豆:216 (菜鸟二级) | 2012-05-07 09:12

@静儿~: 能,用这个试试

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]这个填写你不要的字符。

http://stackoverflow.com/questions/229824/tsql-email-validation-without-regex
悟行 | 园豆:12559 (专家六级) | 2012-05-07 09:17

@荒野的呼唤: 谢谢了

静儿~ | 园豆:216 (菜鸟二级) | 2012-05-07 13:52

@静儿~: 如果有两个@@这个语句也能执行

静儿~ | 园豆:216 (菜鸟二级) | 2012-05-07 17:40

@静儿~: 

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

http://www.mssqltips.com/sqlservertip/1672/sql-server-function-to-validate-email-addresses/

悟行 | 园豆:12559 (专家六级) | 2012-05-07 17:43

@荒野的呼唤: 我用的是2005的数据库,用的是下面的方法。已经解决了

2009-03-16 14:01 ※ABeen※ 博客园 我要评论(0) 字号:T | T
一键收藏,随时查看,分享好友!

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

AD:

 

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

1、创建数据库项目

 

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、将自定义函数关联到数据库

4、Sql 查询分析器

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

EXEC sp_configure 'clr enabled', 1

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

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

静儿~ | 园豆:216 (菜鸟二级) | 2012-05-08 11:16

@静儿~: 它有自带函数,判断?

悟行 | 园豆:12559 (专家六级) | 2012-05-08 11:25

@荒野的呼唤: dbo.RegexValue是自定义的函数

静儿~ | 园豆:216 (菜鸟二级) | 2012-05-08 14:13
其他回答(1)
0

Great , I got it.--------jaw crusher

ballmill | 园豆:202 (菜鸟二级) | 2012-05-07 10:55

?????

支持(0) 反对(0) 静儿~ | 园豆:216 (菜鸟二级) | 2012-05-07 11:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册