我不确定为什么下面的连接查询没有返回任何结果。
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
就 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)
归档时间: |
|
查看次数: |
6070 次 |
最近记录: |