我有两张桌子国籍和学生。这两个表都由belongsID char(3)连接。 char保存像'1'这样的空格。这两个表共有3个字符。但即使它们具有相同的共同价值,也没有结果。我也修剪了空白但没有结果。请查看查询。
SELECT S.StudentID,N.NationalityName
FROM [dbo].[Student] S
LEFT JOIN [dbo].[Nationality] N
ON S.NationalityID=N.NationalityID
WHERE S.StudentID=232
--No Output
使用RTRIM()
之后SELECT S.StudentID,N.NationalityName
FROM [dbo].[Student] S
LEFT JOIN [dbo].[Nationality] N
ON RTRIM(S.NationalityID)=RTRIM(N.NationalityID)
WHERE S.StudentID=232
--No Output
答案 0 :(得分:1)
显然,他们没有相同的价值,您应该修复数据。一个可能的问题是开始和/或结束处的空格。如果是这样,请尝试:
SELECT S.StudentID, N.NationalityName
FROM [dbo].[Student] S LEFT JOIN
[dbo].[Nationality] N
ON LTRIM(RTRIM(S.NationalityID)) = LTRIM(RTRIM(N.NationalityID))
WHERE S.StudentID = 232;
我不太相信这会奏效。假设这些值是ASCII字符,您可以使用ASCII函数来查看实际存储的内容:
SELECT S.NationalityID, ASCII(LEFT(S.NationalityID, 1)),
ASCII(SUBSTRING(S.NationalityID, 2, 1)),
ASCII(RIGHT(S.NationalityID, 1))
FROM Student s;
一旦你弄明白了,然后修复数据,这样连接就可以了。顺便说一句,如果NationalityID
是标识列,则不会出现此问题。