T-SQL - 加入可能包含UNIQUEIDENTIFIER或STRING的NVARCHAR字段

时间:2014-08-29 17:48:12

标签: sql sql-server tsql join

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

以下是我的查询示例:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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