SQL Server JOIN 不起作用

Jua*_*lez 2 join sql-server

我不确定为什么下面的连接查询没有返回任何结果。

SELECT * FROM table1 JOIN table2  ON table1.fieldid = table2.idfield 
Run Code Online (Sandbox Code Playgroud)

以下 2 个查询返回结果,所以当我可以清楚地看到两个表具有共同的连接字段值时,我不确定为什么连接不会选择任何行。

SELECT *  FROM table1 WHERE fieldid =  900399530  (returns rows)
SELECT *  FROM table2 WHERE idfield =  900399530  (returns rows)
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

以下是 2 列的数据类型:

fieldid [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL

idfield [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL

McN*_*ets 8

就 CHAR/VARCHAR/NVARCHAR 字段而言,您应该使用单引号:

也许有一些额外的或领先的空间。

试试这个方法:

SELECT *  FROM table1 WHERE fieldid =  '900399530';
SELECT *  FROM table2 WHERE idfield =  '900399530';
Run Code Online (Sandbox Code Playgroud)

或使用TRIM()函数删除额外的空格。

SELECT * FROM table1 JOIN table2  ON TRIM(table1.fieldid) = TRIM(table2.idfield);
Run Code Online (Sandbox Code Playgroud)

对于 2017 年以下的版本:

SELECT *
FROM   table1
JOIN   table2
ON     LTRIM(RTRIM(table1.fieldid)) = LTRIM(RTRIM(table2.idfield));
Run Code Online (Sandbox Code Playgroud)