Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 将存储公式转换为PL/pgSQL_Postgresql_Plpgsql - Fatal编程技术网

Postgresql 将存储公式转换为PL/pgSQL

Postgresql 将存储公式转换为PL/pgSQL,postgresql,plpgsql,Postgresql,Plpgsql,我在数据库中存储了一个公式,该值由组织中的一些人定义,用于计算平均值。问题是我需要在PL/pgSQL过程postgres中使用该公式,但语法不同,有些公式如下: if (x >= 0 && x <= 51.999) then 0 elsif (x > 51.999 && x <= 64.999) then 70 elsif (x > 64.999 && x <= 90.999) then 100 elsif

我在数据库中存储了一个公式,该值由组织中的一些人定义,用于计算平均值。问题是我需要在PL/pgSQL过程postgres中使用该公式,但语法不同,有些公式如下:

if (x >= 0 && x <= 51.999) then 0 
elsif (x > 51.999 && x <= 64.999) then 70 
elsif (x > 64.999 && x <= 90.999) then 100 
elsif (x > 90.999 && x <= 103.999) then 115 
elsif (x > 103.999 && x <= 130) then 130 end
x=我的价值

我一直在考虑更换,但我不知道这是否是正确的解决方案。。。 所以,我需要你的帮助。 谢谢

在PL/pgSQL语法中:

y:=案例 当x介于0和51.999之间时,则为0 当x介于52和64.999之间时,则为70 当x介于65和90.999之间时,则为100 当x介于91和103.999之间时,则为115 当x在104和130之间时,则为130 终止 请注意,中间是包含在内的。这就是我改变下限的原因。 作为可重用的功能:

创建或替换函数自定义函数x numeric返回数值语言sql作为 $$ 选择案例 当x介于0和51.999之间时,则为0 当x介于52和64.999之间时,则为70 当x介于65和90.999之间时,则为100 当x介于91和103.999之间时,则为115 当x在104和130之间时,则为130 结束::数字; $$; 编辑 多重公式。您可以用一种干净的声明方式定义/更改其中的许多

创建或替换函数pg_temp.custom_function函数名称文本,x数字 返回数值语言sql作为 $$ 使用函数_datafname,范围_lo,范围_hi,结果为 价值观 -函数_a参数值 '函数a',0,51.999,0, “功能”,52,64.999,70, “功能”,65,90.999,100, “函数_a”,91103.999,115, “函数_a”,104,130.999,130, -函数参数值 “功能”,0,51.999,10, “功能”,52,64.999,170, “功能”,65,90.999,200, “功能”,91103.999215, “功能”,104、130.999、230 -其他函数名和值 选择结果::数值 从函数u数据 其中fname=函数名称 以及范围_lo和范围_hi之间的x; $$; 按如下方式调用函数:

if (x >= 0 && x <= 51.999) then 0 
elsif (x > 51.999 && x <= 64.999) then 70 
elsif (x > 64.999 && x <= 90.999) then 100 
elsif (x > 90.999 && x <= 103.999) then 115 
elsif (x > 103.999 && x <= 130) then 130 end
选择自定义函数“函数”,100
看起来你需要一个新的。同时将&&更改为和。您是在询问等效的PSQL语法是什么,还是在询问如何将您拥有的字符串转换为PSQL表达式?在后一种情况下,您在应用程序中使用什么编程语言?您可能不应该在数据库中执行此操作。我需要将该字符串转换为plsql语法,但该公式是可变的,因此可以。与此不同。这个应用程序是RoR,我需要在plsql中为大量的案例做这件事麻烦的是这个函数是一个变量,有些函数和我放的函数一样,而另一些则不同它们遵循类似的模式,即以阶梯式的方式在一个范围内为参数返回一个值?是的,每个公式都非常相似,计算一个范围内的值,其他值如x*1I将附加我的答案