你可以告诉我为什么以下是为什么Postgres sql中不起作用吗? , e4 m4 H. ]- e& P* m% ^4 }See updated code below更新:" R7 M* T+ {# ~, V+ ^: o. }6 N
我希望查询返回 00.30”作为浮点数。此构造仅用于测试目的,我有一些依赖于此条件结构的复杂查询。但是我不知道如何解决它。0 u8 Z3 y& c7 B+ m
结果是: ) Y! e7 i( A3 {ERROR: syntax error at or near "1"LINE 4: if 1=1 then更新:8 U( P! _, v4 V4 [& H& Z% j6 J
这种结构出现在函数中…所以我想做以下事情:# j& \" {- [% j+ g: k. M
CREATE FUNCTION f_test(myvalue integer) RETURNS float AS $$ BEGIN select ( case (select when '1' then if 1=1 then .30::float else .50::float end else .00::float end END;$$ LANGUAGE plpgsql;select f_test(1) as test;错误消息请参见上面。, P' m( w. Y+ v! f) H) b
' V/ r- ]- t" L ]0 ]/ u% w解决方案: @8 |& f2 w9 n' [
IF expr THEN result ELSE resultENDPostgres不用于普通SQL查询语法。因为没有IF()MySQL因此,必须使用中间功能CASE:5 I1 V) f) T' K+ `9 J
select ( case (select 1') when '1' then case when 1=1 then 0.30::float else 0.50::float end else 1.00::float end);