PostgreSQL-如何动态转换?

时间:2019-04-10 18:08:22

标签: sql database postgresql

我有一列以文本表示数据集的类型。

所以我想做这样的事情:

SELECT CAST ('100' AS %INTEGER%);
SELECT CAST (100 AS %TEXT%);

SELECT CAST ('100' AS (SELECT type FROM dataset_types WHERE id = 2));

PostgreSQL可能吗?

1 个答案:

答案 0 :(得分:1)

SQL是强类型的,并且是静态的。 Postgres要求知道列数及其数据类型以及调用时间。因此,您需要为此使用一种过程语言扩展中的动态SQL。然后,您仍然面临功能(必须)具有固定返回类型的障碍。相关:

或者,您可以按照两步进行。首先连接查询字符串(与另一个SELECT查询)。然后执行生成的查询字符串。服务器两次往返。

  1. SELECT '100::' || type FROM dataset_types WHERE id = 2;-记录结果字符串

  2. 执行结果。 (并确保您没有打开任何用于SQL注入的向量!)

关于简写语法: