PostgreSQL - 如何动态投射?

问题描述 投票:0回答:1

我有一个列,其中包含文本中的数据集类型。

所以我想做这样的事情:

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

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

这可能与PostgreSQL有关吗?

sql database postgresql
1个回答
1
投票

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

或者你采用两步流程。首先连接查询字符串(与另一个SELECT查询)。然后执行生成的查询字符串。两次往返服务器。

  1. SELECT '100::' || type FROM dataset_types WHERE id = 2; - 记录结果字符串
  2. 执行结果。 (并确保您没有为SQL注入打开任何向量!)

关于短铸语法:

© www.soinside.com 2019 - 2024. All rights reserved.