[英]Postgres nested if in case query
你能告訴我為什么以下不能在postgres sql中工作嗎?:
See updated code below
更新:
我希望查詢返回“0.30”作為浮點數。 這個構造僅用於測試目的,我有一些復雜的查詢依賴於這個條件結構... BUt我不知道如何解決它..
結果是:
ERROR: syntax error at or near "1"
LINE 4: if 1=1 then
更新:
這個結構出現在一個函數中......所以我想做以下事情:
CREATE FUNCTION f_test(myvalue integer) RETURNS float AS $$
BEGIN
select (
case (select '1')
when '1' then
if 1=1 then
0.30::float
else
0.50::float
end
else
1.00::float
end
);
END;
$$ LANGUAGE plpgsql;
select f_test(1) as test;
錯誤信息見上文。
對於Postgres中的普通SQL查詢,沒有IF expr THEN result ELSE result END
語法。 由於MySQL中既沒有IF()
函數,也必須使用CASE
:
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
);
我不知道你用這個功能想要實現什么,但這是一個有效的版本。
CREATE FUNCTION f_test(myvalue integer) RETURNS float AS $$
BEGIN
IF myvalue = 1 THEN
IF 1=1 THEN
RETURN 0.30::FLOAT;
ELSE
RETURN 0.50::FLOAT;
END IF;
ELSE
RETURN 1.0::FLOAT;
END IF;
END;
如果輸入值為1,則函數返回0.3,否則返回1. 編輯:注意函數永遠不會返回0.5。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.