如何忽略列值上的字符串的一部分

时间:2016-03-08 12:45:47

标签: sql regex postgresql

我写这个sql用于连接两个表。是否有一些正则表达式忽略所有以@info.com结尾的电子邮件。我不想在执行查询后打印它们。

SELECT user_data.alternative_mail
FROM user_data
RIGHT OUTER JOIN users_map
ON users_map.user_id = user_data.user_id
WHERE users_map.service_id = 1 AND 
      users_map.service_user_id = 0

2 个答案:

答案 0 :(得分:3)

您可以使用like。

直接进行字符串操作

e.g。

SELECT user_data.alternative_mail
FROM user_data
RIGHT OUTER JOIN users_map
ON users_map.user_id = user_data.user_id
WHERE users_map.service_id = 1 AND 
    users_map.service_user_id = 0 AND
    user_data.alternative_mail NOT LIKE '%@info.com'

答案 1 :(得分:1)

如果我理解正确,您可以使用REPLACE功能:

SELECT replace(user_data.alternative_mail,'@info.com','')
FROM user_data
RIGHT OUTER JOIN users_map
ON users_map.user_id = user_data.user_id
WHERE users_map.service_id = 1 AND 
      users_map.service_user_id = 0

或者如果您想从结果中过滤它们,您应该使用:

SELECT user_data.alternative_mail
FROM user_data
RIGHT OUTER JOIN users_map
ON users_map.user_id = user_data.user_id
WHERE users_map.service_id = 1 AND 
      users_map.service_user_id = 0 AND
      user_data.alternative_mail NOT LIKE '%@info.com'