- postgre账号下执行
CREATE OR REPLACE FUNCTION boolean_to_smallint(b boolean) RETURNS smallint AS $$
BEGIN
RETURN (b::boolean)::bool::int;
END;
$$LANGUAGE plpgsql;
CREATE CAST (boolean AS smallint) WITH FUNCTION boolean_to_smallint(boolean) AS implicit;
- 测试 is_leader字段为smallint类型
UPDATE public."user"
SET is_leader=True
WHERE id='125';
PostgreSQL 数据类型有3种转换:
- 隐式转换 i(Implicit)
- 赋值转换 a(Assignment)
- 显式转换 e(Explicit)
对应的转换类型存在系统表 pg_cast中
三者的转换关系为 i > a > e
可以隐式转换的一定可以赋值转换和显式转换
可以赋值转换的一定可以显式转换