是否可以將欄位值擴展為比較運算子?像這樣的東西:
create table math (
value1 int,
value2 int,
operator text
);
insert into math values(1,2,'>=');
select * from math where value1 operator value2;
PS:我知道可以通過case when來解決這個用例,但是想知道是否有替代解決方案。
uj5u.com熱心網友回復:
您只能使用case陳述句執行此操作,或case在函式代碼中使用
CREATE OR REPLACE FUNCTION check_values(pvalue1 integer, pvalue2 integer, pop text)
RETURNS boolean
LANGUAGE plpgsql
AS $function$
DECLARE
v_count integer;
v_ret bool;
begin
case pop
when '=' then
return (pvalue1 = pvalue2);
when '>' then
return (pvalue1 > pvalue2);
when '<' then
return (pvalue1 < pvalue2);
when '>=' then
return (pvalue1 >= pvalue2);
when '<=' then
return (pvalue1 <= pvalue2);
else
return false;
end case;
END;
$function$
;
然后你可以在你的查詢中使用這個函式:
select *
from examples.math
where
examples.check_values(value1, value2, "operator");
我認為這只能使用case運營商
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/399531.html
標籤:sql PostgreSQL的
上一篇:postgres別名總和
