sql - PostgreSQL - 如何动态投射?
问题描述
我有一列具有文本数据集的类型。
所以我想做这样的事情:
SELECT CAST ('100' AS %INTEGER%);
SELECT CAST (100 AS %TEXT%);
SELECT CAST ('100' AS (SELECT type FROM dataset_types WHERE id = 2));
PostgreSQL有可能吗?
解决方案
SQL 是强类型和静态的。Postgres 要求在调用时知道列数及其数据类型。因此,您需要在其中一种过程语言扩展中使用动态 SQL。然后您仍然面临函数(必然)具有固定返回类型的障碍。有关的:
或者你采用两步流程。首先连接查询字符串(与另一个SELECT
查询)。然后执行生成的查询字符串。两次往返服务器。
SELECT '100::' || type FROM dataset_types WHERE id = 2;
-- 记录结果字符串执行结果。(并确保您没有为 SQL 注入打开任何向量!)
关于短转换语法:
推荐阅读
- sql - 无法使用 pgAdmin4 读取 CSV 文件,无法打开文件 - 权限被拒绝
- postgresql - PostrgreSQL 尝试执行 plsh 函数
- html - 如何消除不需要的间隙
- 标签和一个 div
- perl - 写入 if 语句中的文件在 Perl 中不起作用
- xamarin - 无法在物理设备上调试(切换到虚拟设备)
- c# - 如何从 MS Access 数据库中的表结构中获取数值字段的精度和比例?
- python - 为 Python 安装 opencv
- python-3.x - 如何使用地板除法返回浮点值
- c++ - 简单的读写锁
- ms-access - MSAccess:异步运行存储过程并返回 - 语法?