[英]SQL Server language data in table
我在具有多语言支持的asp.net中开发Web应用程序。 让我们说我有这个数据表(我无法更改)ITEMS。
ID项目语言
1台车EN
1个DAS汽车去
2门en
3台恩
3蒂施德
如果用户使用德语,则sql如下所示:
SELECT id, item from ITEMS WHERE language = 'de'
我得到的结果是:
1 das auto
3 tisch
问题是,所有行均未翻译,因此,如果我要在语言字段为“ de”的情况下显示所有数据,则结果只是带有语言字段为“ de”的项目。 我希望如果某行没有'de'字段,则它应该显示默认语言('en')。
在这种情况下,结果应该是
1 das auto
2 door (there is no translation for door, so english version should display)
3 tisch
我在SQL语句中尝试使用ISNULL,但未成功。
仅供参考,我正在使用存储过程。
请帮帮我。
您可以使用合并和联接。 请注意,在这种情况下,ISNULL与COALESCE的作用相同,但如果您添加一些新语言,则此应用程序看起来更好。
SELECT i1.id, COALESCE(i2.item,i1.item) from Items i1
LEFT JOIN Items i2 ON i2.id = i1.id AND i2.language = 'de'
WHERE i1.language = 'en'
如果您需要更多列以上但相同表上方的内容,则只需更新COALESCE条目。 例如,以下查询也会向您显示语言:
SELECT i1.id, COALESCE(i2.item,i1.item) AS Item, COALESCE(i2.language, i1.language) Language from Items i1
LEFT JOIN Items i2 ON i2.id = i1.id AND i2.language = 'de'
WHERE i1.language = 'en'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.