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数据库查询使用正则表达式如何查询中文?的主要内容,如果未能解决你的问题,请参考以下文章
为了对存储在 Oracle db 中的数据运行搜索查询,在 PL/SQL 中使用 REGEXP 是不是比在 Java 正则表达式中获取所有数据并过滤它更快?