是否可以将字段值扩展为比较运算符?像这样的东西:
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
,但想知道是否有替代解决方案。
是否可以将字段值扩展为比较运算符?像这样的东西:
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
,但想知道是否有替代解决方案。
是的,可能。您需要动态 SQL 来评估表达式。
不安全
一种简单、幼稚的方法。比安全方法更简单、更快。
这对SQL 注入开放。如果您的表源是安全的,那就足够了。但是,表源是否安全?
安全的
我建议使用这种安全的方法:
打电话给你的例子:
db<>在这里摆弄
转换为对象标识符类型
pg_operator
强制执行有效的运算符(有效地检查系统目录中的有效条目pg_operator
)。下一次强制转换pg_oper
只是为OPERATOR
构造获取有效格式的便捷方式。看: