删除函数:
语法:
DROP FUNCTION IF EXISTS your_schema_name.function_name(arg_type1, arg_type2) CASCADE RESTRICT;实例:
DROP FUNCTION IF EXISTS platformyw.boolean_to_smallint(bool) CASCADE RESTRICT;
查询是否存在函数
语法:
SELECT * FROM information_schema.routines WHERE routine_catalog={you_catalog_name} and routine_schema={you_schema_name} and routine_name ={you_func_name} and routine_type = 'FUNCTION';实例:
SELECT * FROM information_schema.routines WHERE routine_catalog='gisqdb' and routine_schema='platform'
and routine_name ='boolean_to_smallint' and routine_type = 'FUNCTION';
创建转化函数
CREATE OR REPLACE FUNCTION boolean_to_smallint(b boolean) RETURNS smallint AS $$
BEGIN
RETURN (b::boolean)::bool::int;
END;
$$LANGUAGE plpgsql;
drop cast if exists (boolean as smallint);
创建一个全局类型转化
具体地说,如果布尔值为 TRUE
,则转换为 1
;如果布尔值为 FALSE
,则转换为 0
。
例如,CAST (TRUE AS smallint)
将返回 1
,CAST (FALSE AS smallint)
将返回 0
。
语法:
CREATE CAST (source_type AS target_type) WITH FUNCTION function_name(argument_type) [ AS ASSIGNMENT | AS IMPLICIT ];其中:
source_type 是要转换的源类型,target_type 是要转换的目标类型,function_name 是执行转换的函数,argument_type 是函数的参数类型。AS ASSIGNMENT 和 AS IMPLICIT 用于指定转换类型的方式。AS ASSIGNMENT 表示将转换定义为显式转换,需要显式地使用 CAST 运算符进行转换;AS IMPLICIT 表示将转换定义为隐式转换,可以在不使用 CAST 运算符的情况下自动进行转换实例:
CREATE CAST (boolean AS smallint) WITH FUNCTION boolean_to_smallint(boolean) AS implicit;
查询转化是否存在
布尔值为 TRUE
,则转换为 1
;如果布尔值为 FALSE
,则转换为 0
SELECT 1 FROM pg_cast c JOIN pg_type t1 ON c.castsource = t1.oid JOIN pg_type t2 ON c.casttarget = t2.oid
WHERE t1.typname = 'boolean' AND t2.typname = 'smallint';
删除转化
drop cast if exists (boolean as smallint);
查询pg版本号
select version();