【问题标题】:T-SQL - Joining NVARCHAR field that may contain UNIQUEIDENTIFIER or STRINGT-SQL - 加入可能包含 UNIQUEIDENTIFIER 或 STRING 的 NVARCHAR 字段
【发布时间】:2014-08-29 17:48:11
【问题描述】:

我的一个表中有一个字段,其中可能包含一个 UNIQUEIDENTIFIER 或一个表示名称的字符串。我想使用此字段加入另一个表,如果该值是 UNIQUEIDENTIFIER,它应该与第二个表的 KEY 字段连接,但如果该值是一个字符串,它应该与第二个表的 NAME 字段连接。

这是我的查询示例:

SELECT * FROM Table1 AS T1
LEFT JOIN Table2 AS T2
    ON
        T2.NAME = T1.NAME
        OR T2.KEY = T1.NAME

此查询不起作用,因为它在尝试将字符串转换为 UNIQUEIDENTIFER 时引发错误。不幸的是,我没有另一个字段可以识别哪些记录包含 UNIQUEIDENTIFIER 与字符串,以便简单地执行 2 个查询并将它们联合起来。

有谁知道处理这种情况的最佳方法?

【问题讨论】:

    标签: sql sql-server tsql join


    【解决方案1】:

    您可以尝试将 UID 转换为字符串类型并进行匹配吗?

    SELECT * 
    FROM 
        Table1 AS T1
         LEFT JOIN 
        Table2 AS T2ON
            CAST(T2.KEY AS NVARCHAR(50)) = T1.NAME OR
            T2.NAME = T1.NAME
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 2016-05-31
      相关资源
      最近更新 更多