搜索电子邮件仅包含 X 字符的行



我想搜索column email只有X字符的行。

例如,如果电子邮件XXXX,它应该提取行,但如果电子邮件XXX@XXX.COM则不应提取。

我已经尝试过这样的事情,但它会返回我所有带有X字符的电子邮件:

select *
from STUDENTS
where EMAIL like '%[X+]%';

知道我的查询有什么问题吗?

谢谢

尝试以下查询:

select *
from STUDENTS
where LEN(EMAIL) > 0 AND LEN(REPLACE(EMAIL,'X','')) = 0;

我会使用PATINDEX

SELECT * FROM STUDENTS WHERE PATINDEX('%[^X]%', Email)=0

只有 X 表示除 X 之外没有其他字符。

要处理NULL和空字符串,应考虑其他条件。请参阅下面的演示:

WITH STUDENTS AS
(
SELECT * FROM (VALUES ('XXXX'),('XXX@XXX.COM'),(NULL),('')) T(Email)
)
SELECT *
FROM STUDENTS
WHERE PATINDEX('%[^X]%', Email)=0 AND LEN(Email)>0

这将查找电子邮件仅包含 1 个或多个 X 而不包含其他字符的所有行。

SELECT *
FROM STUDENTS
WHERE Email not like '%[^X]%' and Email <> ''

最新更新