【问题标题】:Concat string as `"@gmail" to Usernames and ignore some lines将字符串作为 `"@gmail" 连接到用户名并忽略某些行
【发布时间】:2015-05-24 21:46:52
【问题描述】:

我有一个表 Table1,其中包含以下字段用户名 NumberID CodeUser Company

Username NumberID CodeUser Company user1 12453 245 G user2 25145T Y user3 1845Z /500 G user4 65421 3452 Y user5 13254 /076 Y

我会有一个查询结果,它将显示行 user1user4 含义要忽略 WHERE CodeUser 为空或具有以 / 开头的字符但如果 @987654327 Username 也应该具有完整地址@(这意味着 user1 应该显示 user1@gmail.com

当我单独进行查询时,我有结果,但是当我尝试在一个查询中组合时,我有错误。

1. SELECT Username, CONCAT( Username, "@gmail.com" ) ,NumberID, CodeUser, Company
FROM `Table1` 
WHERE Company = 'G';


2. SELECT Username,NumberID,CodeUser,Company
FROM Table1
WHERE CodeUser >'' AND CodeUser NOT LIKE '/%'

你能帮我把它合并到一个查询中吗?

【问题讨论】:

    标签: mysql concat


    【解决方案1】:

    以为你已经知道了所有的答案

    SELECT Username,
      CASE WHEN Company='G' THEN 
          CONCAT(Username, '@gmail.com') ELSE '' END AS GMail,
      NumberID, CodeUser, Company 
    FROM Table1 WHERE CodeUser >'' AND CodeUser NOT LIKE '/%'
    

    【讨论】:

    • 再次感谢@Tim3880。它工作正常。在最后一个答案之后,我不得不添加新列,然后遇到了 concat 问题。现在一切正常。您的回答也有助于我构建更多查询。
    • 嗨 Tim3880,嗨,我又回来了。我正在尝试一种方法来摆脱属于字段的某些字符。例如,在表 2 中,我在字段用户名 user1@gmail.com、user2@gmail.com 等中有,如何删除 @gmail.com 并只留下用户名的第一部分,即 user1 ...再次感谢
    • 嗨,同时得到了这个可以工作的UPDATE table2 SET Username = REPLACE(Username, '@gmail.com, ' ');谢谢。
    【解决方案2】:

    这是你想要的吗?

    SELECT (case when company = 'G' then CONCAT(Username, '@gmail.com'
                 else UserName
            end) as username,
           NumberID, CodeUser, Company
    FROM Table1
    WHERE (Company = 'G') or
          (CodeUser > '' AND CodeUser NOT LIKE '/%');
    

    【讨论】:

    • 感谢 Gordon 的回答。它有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多