回答

收藏

Postgres以防查询

技术问答 技术问答 245 人阅读 | 0 人回复 | 2023-09-14

你可以告诉我为什么以下是为什么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);
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则