老实说,我现在对 DVD 租赁数据库感到很迷茫。 我一直在尝试考虑要转换的数据,并且我认为我已经找到了可以使用的东西。我想将 Language_id 列中的数字转换为语言,并且我在 select 语句中使用 CASE 成功地做到了这一点,但是由于我需要使用用户定义的函数,所以我无法让它在函数中工作。
我已经来回工作了几个小时来查找错误,目前我已成功完成该功能
创建或替换函数 lang_change(language_id int)
返回 VARCHAR(20)
语言 plpgsql
AS
$$
开始
选择
案例语言_id
当 language_id = 1 时,则为“英语”
否则“未定义”
结束;
返回语言_id;
结束;
$$
。但是当我执行 SELECT lang_change(1) 来尝试测试它时,它会抛出
错误:运算符不存在:整数=布尔值
第 3 行:当 language_id = 1 时,则为“英语” ^ 提示:没有运算符与给定名称和参数类型匹配。您可能需要添加显式类型转换。
对着我。我已经尝试在一些地方使用 CAST 将类型更改为 VARCHAR(20)(如果这是修复方法),但它没有以我尝试过的任何方式工作。我非常感谢所提供的任何和所有帮助。 谢谢!
为什么返回语言_id; ?您应该直接返回选择。您可以将函数更新为如下所示:
CREATE OR REPLACE FUNCTION lang_change(language_id INT)
RETURNS VARCHAR(20)
LANGUAGE plpgsql
AS $$
BEGIN
RETURN CASE language_id
WHEN 1 THEN 'English'
ELSE 'UNDEFINED'
END;
END;
$$;
这是测试的小提琴链接