Как использовать значения из столбцов с LIKE - Postgresql - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь проверить достоверность списка электронных писем. Допустимые электронные письма - это те, которые отформатированы как:

name.lastname@host.domain

Я могу найти действительные электронные письма, используя оператор regex или LIKE. Но я хотел бы узнать, есть ли способ использовать данные из других столбцов, таких как «имя» и «фамилия», чтобы избежать любых проблем, которые могут возникнуть из-за уникальных имен, которые включают в себя различные символы, которые не охватываются [A-Za-z] в Regex.

Я пробовал это:

SELECT name, 
       lastname, 
       email, 
       CASE
           WHEN email ~ '[A-Za-z]*\.[A-Za-z]*\@[A-Za-z]*\.[A-Za-z]*' THEN true
           ELSE false
       END AS valid
FROM personlist

и это:

SELECT name, 
       lastname, 
       email, 
       CASE 
         WHEN email LIKE '%.%||%.%' THEN true 
         ELSE false 
       END AS valid 
FROM   personlist 

Они, кажется, работают очень хорошо, но я хочуузнайте, есть ли способ использовать данные из других столбцов с оператором, таким как LIKE. Я думаю, что использование данных из существующих столбцов приведет к более целенаправленным и надежным запросам.

Например:

+-----------+----------+-----------------------------+-------+
|   name    | lastname |            email            | valid |
+-----------+----------+-----------------------------+-------+
| Molly-Rae | Jackson  | molly-rae.jackson@xmail.com | true  |
| Molly-Rae | Jackson  | molly-raejackson@xmail.com  | false |
+-----------+----------+-----------------------------+-------+

1 Ответ

1 голос
/ 07 ноября 2019

Вы можете использовать другие столбцы для вычисления шаблона, который вы хотите проверить. Например:

select
  name, 
  lastname, 
  email,
  lower(email) like lower(name || '.' || lastname || '@xmail.com') as valid
from personlist
...