【问题标题】:Matching two columns with common values and fetching similar values匹配具有共同值的两列并获取相似值
【发布时间】:2016-06-15 16:27:31
【问题描述】:

可能是一个非常基本的问题。我有两个表(SQL Server 2012)EventsUser Details。第一个表有一个用户登录名为“xyz”的列。第二个有一个列,用户登录 'xyz'、'xyz-a'、'xyz-b' 等都具有相同的用户 ID。

如果第二个表中存在/不存在带有后缀的用户登录,则必须相应地设置一些标志。怎么获取?

非常感谢任何帮助。非常感谢!!

【问题讨论】:

  • 如何获取?也许 `SELECT * FROM [User Details] WHERE column_name LIKE 'xyz-%'
  • 如何获取?也许SELECT * FROM [User Details] WHERE column_name LIKE 'xyz-%'

标签: sql-server outer-join


【解决方案1】:

您可以在连接条件中使用like 和CONCAT

    SELECT * FROM Events a INNER JOIN User_Details B ON a.userlogins  LIKE CONCAT( B.username, '%');

【讨论】:

    【解决方案2】:

    如果“-”始终是第二个表中的分隔符,您可以在下面执行。 case 语句首先查看字符串中是否存在“-”,它只查看短划线的左侧,如果短划线不存在则查看整个登录。

    SELECT *
    FROM
        EventsTable E
        JOIN UserDetailsTable U
            ON  E.LoginID = CASE WHEN CHARINDEX('-',U.LoginID) > 0 THEN LEFT(U.LoginID,CHARINDEX('-',U.LoginID)-1) ELSE U.LoginID END
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      相关资源
      最近更新 更多