首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server -通过[^charlist]搜索‘characters

SQL Server -通过[^charlist]搜索‘characters
EN

Stack Overflow用户
提问于 2018-01-11 22:18:11
回答 1查看 82关注 0票数 0

我正在尝试在包含不应在电子邮件地址中出现的字符的列中查找所有电子邮件地址(例如, )。下面的脚本工作正常,但是'字符也应该被过滤掉,但是我似乎不能把它放到脚本中,并让它的其余部分工作。

代码语言:javascript
复制
SELECT top 20 Email FROM users WHERE email LIKE '%[^-0-9a-zA-Z@.!#$%&*+-/=?^_`}{|~]%'

我尝试通过''\''添加它,但当我这样做时,我开始得到包含我之前过滤掉的字符的结果(例如,带有+. in的电子邮件,但没有不需要的字符)。

任何建议都将不胜感激,谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-01-11 23:13:26

我忽略了潜在的“如何验证电子邮件地址?”问题是因为that's a religious issue

这对我来说很有效:

代码语言:javascript
复制
SELECT *
FROM (VALUES ('''john@example.com'''), ('frank^@example.com'), ('ali%ce@example.com'),('bo\b@example.com')) x (email)
WHERE email LIKE '%[^-0-9a-zA-Z@.!#$%&*+-/=?^_`}{|~'']%' 

这里似乎没有必要进行转义。如果愿意,可以对保留在字符列表之外的%_字符使用可选的转义子句。^还保留为字符列表中的第一个字符作为NOT指示符,因此您可能也希望转义该字符:

代码语言:javascript
复制
SELECT *
FROM (VALUES ('''john@example.com'''), ('frank^@example.com'), ('ali%ce@example.com'),('bo\b@example.com')) x (email)
WHERE email LIKE '%[^-0-9a-zA-Z@.!#$\%&*+-/=?\^\_`}{|~'']%' ESCAPE '\'

您可能会发现这更清楚地说明了您要做什么,因此您可能会认为它更易于维护。然而,这种转义并不是绝对必要的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48209174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档