Postgresql

字元變化與文本作為 PostgreSQL 中的函式參數類型

  • February 14, 2020

character varyingtext作為 db 函式參數的類型之間是否有任何顯著差異(例如性能) ?我有 2 個使用範例:

範例 1:

CREATE OR REPLACE FUNCTION func1(table_name <character varying|text>)
 RETURNS integer AS $$
DECLARE
 RESULT integer;
BEGIN
 EXECUTE 'SELECT COUNT(*) FROM ' || table_name INTO result;
 RETURN result;
END; 
$$ LANGUAGE plpgsql;

範例 2:

CREATE OR REPLACE FUNCTION func2(filter_value <character varying|text>)
 RETURNS integer AS $$
DECLARE
 RESULT integer;
BEGIN
 SELECT COUNT(*) INTO RESULT FROM <some_table> WHERE <some_column> = filter_value;
 RETURN result;
END; 
$$ LANGUAGE plpgsql;

注意在第二個例子中,some_column類型是textiffilter_value是類型character varying,反之亦然

在性能方面,這些數據類型完全相同,直至 C 中的實現。

如果有疑問,請使用text, 因為這是其類型類的**首選類型,並且函式的數據類型解析規則會將所有未知字元串隱式解析為。你經常不得不使用顯式類型轉換。text``character varying

引用自:https://dba.stackexchange.com/questions/259692