SQL 案例/如果其他案例的值为空

SQL Case / if value from other CASE is empty

我有一个 SQL 查询,其中有可用的德语和英语翻译名称。根据用户设置和现有的翻译数据,我想定义 SQL 查询输出。在我的示例中,用于根据用户设置选择语言的 CASE 正在运行,但第二个 CASE 函数不起作用,因为它不知道第一个 CASE 函数的定义。

我正在开发 XAMPP v3.2.4 / 服务器版本:10.4.11-MariaDB

这是我的尝试:

SELECT questionaire.quest_name_de, questionaire.quest_name_en,

# CASE 1: check what language settings the user haves selected
CASE :language WHEN 'de' THEN questionaire.quest_name_de ELSE questionaire.quest_name_en END AS quest_name_translation,

# CASE 2: if the output is empty take german translation which is never empty
CASE quest_name_translation WHEN '' THEN questionaire.quest_name_de ELSE quest_name_translation END AS quest_name_final
 
FROM questionaire 
   

我想要的输出如下:

用户语言设置为英语,因此我查询中的第一个 CASE 函数将 select 'questionaire.quest_name_en'。接下来,第二个 CASE 函数将检查 'quest_name_translation' 的数据是否不为空。如果为空,则选择 'questionaire.quest_name_de'。 我的问题是第二个 CASE 不知道第一个 CASE 的 'quest_name_translation'。这个方法不行吗?

使用AND组合条件。仅当要求英语且英语可用时,您才会显示英语文本,否则德语:

SELECT
  questionaire.quest_name_de,
  questionaire.quest_name_en,
  CASE WHEN :language = 'en' AND quest_name_en <> '' AND quest_name_en IS NOT NULL
    THEN quest_name_en
    ELSE quest_name_de
  END AS quest_name_final
FROM questionaire;