功能WHERE子句中的PostgreSQL(动态列)
问题描述:
我创建func_leonard_test2函数返回teach_fra =真时功能WHERE子句中的PostgreSQL(动态列)
SELECT func_leonard_test2('Français-Philosophie');
func_leonard_test2
CREATE OR REPLACE FUNCTION public.func_leonard_test2(
IN url text,
OUT translation text)
RETURNS text AS
$BODY$BEGIN
SELECT CONCAT(translate,'=true') INTO translation FROM seo_content WHERE name=url;
END;$BODY$
我想在添加功能where子句像低于
SELECT description FROM c_users WHERE (SELECT func_leonard_test('Français-Philosophie')) LIMIT 10;
但我得到th e error 错误:WHERE的参数必须是布尔类型,而不是文本类型
如何使函数在WHERE子句中工作?
谢谢你的时间。
答
你的函数返回一个字符串。你需要某种字符串比较。像成才:
WHERE func_leonard_test('Français-Philosophie') IS NOT NULL
或
WHERE func_leonard_test('Français-Philosophie') = 'ABC'
此外,SELECT
是没有必要的。
编辑:
我想你想要的函数返回一个布尔值。写这将是一个方法:
CREATE OR REPLACE FUNCTION public.func_leonard_test2 (
IN in_url text
)
RETURNS boolean AS
$BODY$BEGIN
RETURN (SELECT (c.translate = true)
FROM seo_content c
WHERE c.name = in_url
);
END;$BODY$
然后你可以使用:
WHERE func_leonard_test('Français-Philosophie')
+0
嗨,我得到这个**函数结果类型必须是布尔值,因为OUT参数**,这里的OUT可能是teach_fra = true不是布尔值。 –
你需要在你的函数返回值。 – Mokadillion