我有一个奇怪的问题。我正在尝试运行此代码,但它不会返回任何匹配项。这应该工作。两个表中都存在LanguageId。我唯一能想到的是字段类型是nvarchar。
SELECT Users.LanguageId
FROM Users
JOIN Locale ON Users.LanguageId = Locale.LanguageId
您可以在http://www.mediafire.com/download/3eute31s35tygw2/TEST.zip下载测试数据库。我猜测'en-us'被保存到Users.LanguageId的方式有所不同。如果删除该值并手动输入'en-us',则可以正常工作。
答案 0 :(得分:3)
一个表上的LanguageId是en-us,另一个是en_us。这就是他们没有正确加入的原因。
答案 1 :(得分:1)
您必须将en-us
更改为en_us
,请尝试以下解决方案
SELECT Users.LanguageId
FROM Users
JOIN Locale ON Users.LanguageId = REPLACE(Locale.LanguageId,'-','_')
或更好的方法是修复表格中的数据:
update Locale
set LanguageId = REPLACE(LanguageId,'-','_')