当前位置: 首页 > news >正文

PG数据库实现bool自动转smallint的方式

删除函数:

语法:
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) 将返回 1CAST (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(); 

http://www.lryc.cn/news/62798.html

相关文章:

  • 易观千帆 | 2023年3月证券APP月活跃用户规模盘点
  • 2023年江苏专转本成绩查询步骤
  • JavaScript中sort()函数
  • 泰克Tektronix DPO5204B混合信号示波器
  • 突破传统监测模式:业务状态监控HM的新思路
  • 0Ω电阻在PCB板中的5大常见作用
  • 分布式消息队列Kafka(三)- 服务节点Broker
  • 蠕动泵说明书_RDB
  • 浅谈react如何自定义hooks
  • 如何优雅的写个try catch的方式!
  • 海尔智家:智慧场景掌握「主动」权,用户体验才有话语权
  • 基于铜锁,在前端对登录密码进行加密,实现隐私数据保密性
  • LVS的小总结
  • Spring依赖注入(DI配置)
  • 绘声绘影2023简体中文版新功能介绍
  • 一个好的前端开发人员必须掌握的前端代码整洁与开发技巧
  • 【别再困扰于LeetCode接雨水问题了 | 从暴力法=>动态规划=>单调栈】
  • 酒厂酒业IP网络广播系统建设方案-基于局域网的新一代交互智慧酒厂酒业IP广播设计指南
  • OpenHarmony JS Demo开发讲解
  • CentOS系统安装Intel E810 25G网卡驱动
  • Java经典的String面试题
  • c# 结构体与类区别
  • 使用 patch 命令打补丁
  • C++——类和对象[上]
  • MySQL日志
  • TinyURL 的加密与解密、猜数字游戏、 Fizz Buzz、相对名次----2023/4/28
  • Spring boot结合SkyWalking-Trace工具类实现日志打印请求链路traceid
  • 精通ES=ElasticSearch
  • RabbitMQ-扇形交换机(Fanout )
  • Python 学习曲线 从 Python 新手到 Pro