感謝您閱讀我的帖子并嘗試提供幫助。
我對 PostgreSQL 很陌生,正在努力嘗試創建一個函式來將當前為整數 (1,0) 的表列轉換為“是”或“否”并在更改后重新顯示表,您對如何建議有什么建議最好這樣做?
下面將運行并顯示一個成功的查詢,但是當我實際嘗試使用 SELECT convert_active(); 運行它時;它不作業。我也嘗試過使用 CASE 來做到這一點,但也無法讓它作業。請幫忙!
CREATE or REPLACE FUNCTION convert_active()
Returns TABLE (customer_id int,
first_name varchar,
last_name varchar,
email varchar,
rental_date timestamp,
active varchar)
Language plpgsql
As $$
Begin
RETURN QUERY
SELECT CASE WHEN active = 1 THEN ‘Yes’
ELSE ‘No’
END
FROM email_marketing_list;
END; $$;
uj5u.com熱心網友回復:
您的函式查詢有兩個問題:
如果您在函式結構中初始化列,則
returns query必須在查詢中回傳列,而在查詢中只需回傳CASE WHEN active = 1 THEN ‘Yes’ ELSE ‘No’在您的函式中添加
active varchar和查詢需要轉換為varchar
CREATE or REPLACE FUNCTION convert_active()
RETURNS TABLE
(
customer_id INT,
first_name VARCHAR,
last_name VARCHAR,
email VARCHAR,
rental_date TIMESTAMP,
active VARCHAR
)
LANGUAGE plpgsql
AS
$$
BEGIN
RETURN QUERY
SELECT eml.customer_id,
eml.first_name,
eml.last_name,
eml.email,
eml.rental_date,
(CASE
WHEN eml.active = 1 THEN 'Yes'
ELSE 'No'
END)::VARCHAR
FROM email_marketing_list eml;
END;
$$;
uj5u.com熱心網友回復:
比函式更好地創建視圖,就像
create or replace view email_marketing_list_v as
SELECT customer_id, first_name, last_name, email,rental_date,
case when active = 1 then 'Yes' when active = 0 then 'No' end ::text as active
FROM email_marketing_list;
視圖不會像函式那樣打敗索引,也不是優化障礙。
有 1 和 0 的情況將正確處理空值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/343257.html
