我有一个包含多个表中的列的视图,其中一个列是根据另一个表中 jsonb 中的值创建的:
CREATE VIEW my_view AS
SELECT table_1.id AS id, table_2.name AS name,
table_3.metadata::json->>'total_count' AS count
FROM table_1
LEFT JOIN table_2 ON ...
现在我可以像这样完美地从 jsonb 中提取值,没有任何问题,但问题是在
count
中创建的列 my_view
是文本类型(因为它是从 json 中提取的),但我希望它是数字类型,有什么办法可以做到这一点吗?提取并更改提取值的类型?
我尝试通过更改视图来更改类型,但我发现我们不能在 postgres 中做到这一点,所以我唯一的解决方案是在提取它时更改类型。
您已经在使用
::
转换语法。如果您将提取内容放在括号中,则可以再次使用它来将结果 text
更改为 numeric
。
更改视图定义是通过
create or replace
: 完成的
CREATE OR REPLACE VIEW my_view AS
SELECT table_1.id AS id, table_2.name AS name,
(table_3.metadata::json->>'total_count')::numeric AS count
FROM table_1
LEFT JOIN table_2 ON ...