我有一个包含数据集类型的文本列。
因此,我想要做这样的事情:
SELECT CAST ('100' AS %INTEGER%);
SELECT CAST (100 AS %TEXT%);
SELECT CAST ('100' AS (SELECT type FROM dataset_types WHERE id = 2));
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注入打开任何向量!)
关于短转换语法:
WHERE id = 2
?我的意思是,如果你知道要查找哪种数据类型,则已经知道数据类型了,对吧? - Jorge Campos