我想搜索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 <> ''