SQL数据库查询使用正则表达式如何查询中文?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL数据库查询使用正则表达式如何查询中文?相关的知识,希望对你有一定的参考价值。

SQL数据库查询使用正则表达式如何查询中文?不是自己运行过的,请不要转载他人的,谢谢

我不知道这算不算sql的正则表达式,它只模糊查询但是可以达到正则表达式的效果select * from shop_yw where name2 between '李明' and '张明'select * from shop_yw where name2 like '%李%'select * from shop_yw where name2 like '[李明-张立]'select * from shop_yw where name2 like '[a-z]'select * from shop_yw where name2 like '-['李','赵']'select * from shop_yw where name2 like '[^a-f]' 参考技术A 录入 select ID as 学号 用as关键字。 参考技术B -- unicode(expression)函数返回字符串类型的unicode码
--中文对应的unicode码大致为(应该是精确的):19968-40869
declare @tb table
(
[a] varchar(50)
)
insert @tb
select '客' union all
select '客' union all
select '中' union all
select 'a' union all
select '/' union all
select '.' union all
select '*' union all
select '@' union all
select '了' union all
select '鹰' select [a] from @tb where unicode([a]) between 19968 and 40869
go --结果

如何仅查询电子邮件值? [关闭]

【中文标题】如何仅查询电子邮件值? [关闭]【英文标题】:How to query for only email values? [closed] 【发布时间】:2013-07-29 18:14:19 【问题描述】:

仅使用 SQL,有没有一种方法可以查询来自杂项数据列的所有电子邮件值? 我试过like '%@%',但可能会有这样的文字:Fort Knox @ Room 123

编辑:正则表达式不可用。 我也试过like '%@%.%',但没有用空格覆盖。

【问题讨论】:

什么味道的sql?你还尝试了什么? ***.com/questions/15523789/… ***.com/questions/801166/… sql 数据库用于结构化数据。如果您在字段中存储“随机”文本,那么不要指望数据库会帮助您尝试从混乱中创建秩序。 @MarcB 我希望我是设计数据库的人...我只是一个拥有现有系统的组织的仆从。 【参考方案1】:

这里是SQLFiddle。

 SELECT *
  FROM TABLENAME
  WHERE email LIKE '%@%.%'
    AND email NOT LIKE '% %';

【讨论】:

这也是我得出的最终结论。 但如果我有电子邮件 ID,这将不起作用。 somu_som@gmail.c【参考方案2】:

如果您不介意使用 CLR 函数,我建议您编写一个 .NET 方法,该方法使用正确的正则表达式(您可以在网上找到各种)来验证电子邮件地址,然后将该函数作为您的一部分调用查询。

select * from whatever
where dbo.IsThisAnEmailAddress(myColumn) = 1

【讨论】:

请记住,如果您的数据库中有很多记录,这将会非常缓慢。【参考方案3】:

我会在您的查询中使用regular expressions 来获取电子邮件。该网站上有大量有效电子邮件正则表达式的链接。

【讨论】:

【参考方案4】:

我同意其他人的观点,RegEx 更好,但是,如果不可用,请尝试以下方法

WHERE fieldName LIKE '%@%' 
      AND fieldName LIKE '%.%' 
      AND charindex(' ',fieldName)=0

这不是很好,也很慢,但应该让你非常接近。 I.E 同时包含 @ 和 .并且没有空格...

SQLFiddle:http://www.sqlfiddle.com/#!3/5f6d8/1

【讨论】:

以上是关于SQL数据库查询使用正则表达式如何查询中文?的主要内容,如果未能解决你的问题,请参考以下文章

数据库笔记-SQL过滤(LIKE&正则表达式)

database 如何查询某个字段以某个字母开头的数据

sql模糊查询

为了对存储在 Oracle db 中的数据运行搜索查询,在 PL/SQL 中使用 REGEXP 是不是比在 Java 正则表达式中获取所有数据并过滤它更快?

使用正则表达式匹配 SQL 查询

如何在 django 查询中使用正则表达式