顯然
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
後,他們不具有相同的值,你應該修正數據。一個可能的問題是開始和/或結束處的空間。如果是這樣,請嘗試:
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
是標識列,那麼您不會遇到此問題。
添加一些示例表格數據和預期結果 - 以及格式化文本。 – jarlh
另請確認你是否在兩個表中有國籍編號的關係 – Simran
有一件事情是用RTRIM在列上執行簡單的select語句並檢查兩個表值是否相同? –