Вы можете сделать:
SELECT DISTINCT name FROM table WHERE name !~* '[a-z]'
Это означает: совпадать с name
с, которые не содержат буквенно-цифровых символов.
Оператор !~*
означает:
Не соответствует регулярному выражению, без учета регистра
Редактировать на основе предоставленных данных выборки и ожидаемых результатов.
Если вы хотите сопоставить имена, которые содержат хотя бы один символ, отличный от буквенного символа или точки, то вы можете сделать:
select * from mytable where name ~* '[^a-z.]'
Демонстрация на DB Fiddle :
with mytable(name) as (values
('john'),
('joh1n1'),
('j!ohn!'),
('jo!h2n'),
('joh.n'),
('jo.&hn'),
('j.3ohn'),
('j.$9ohn')
)
select * from mytable where name ~* '[^a-z.]'
| name |
| :------ |
| joh1n1 |
| j!ohn! |
| jo!h2n |
| jo.&hn |
| j.3ohn |
| j.$9ohn |