代码之家  ›  专栏  ›  技术社区  ›  Peter Nixey Axe

如何在SQL中使用列进行文本计算

  •  0
  • Peter Nixey Axe  · 技术社区  · 3 年前

    我希望在SQL查询中有条件地包含特定列中的值。为了说明这个问题,让我使用一个虚构的示例,返回关于用户的选择性数据。

    如果我们要返回所有数据,我们将使用以下形式的查询:

    SELECT 
      name, email, gender 
    FROM 
      users
    

    假设所有用户都输入了他们的性别。然而,一些人设定了 gender_public 我希望在查询返回的数据中反映这一点。

    我想做的事情是:

    SELECT 
      name, email, if(gender_public, gender, 'N/A')
    FROM 
      users
    

    这可能吗?我在为博士后工作

    1 回复  |  直到 3 年前
        1
  •  1
  •   Fabian Pijcke    3 年前

    用例

    正如@a_horse_with_no_name所建议的那样,这是显而易见的方法。

    假设gender_public是布尔类型。

    SELECT name, email, CASE WHEN gender_public THEN gender ELSE 'N/A' END AS gender
    FROM users;
    

    使用横向连接

    如果您需要在多个位置使用该值,并且希望保持一致,这种方法尤其有用。

    SELECT name, email, T.gender
    FROM users
    CROSS JOIN LATERAL (
      SELECT gender WHERE show_gender
      UNION
      SELECT 'N/A' WHERE NOT(show_gender)
    ) T(gender)