繁体   English   中英

表中的SQL Server语言数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM