Postgresql
字元變化與文本作為 PostgreSQL 中的函式參數類型
character varying
與text
作為 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
類型是text
iffilter_value
是類型character varying
,反之亦然
在性能方面,這些數據類型完全相同,直至 C 中的實現。
如果有疑問,請使用
text
, 因為這是其類型類的**首選類型,並且函式的數據類型解析規則會將所有未知字元串隱式解析為。你經常不得不使用顯式類型轉換。text``character varying