gpt4 book ai didi

sql - 如何在 Postgresql 中选择所有不包含某个子字符串的列?

转载 作者:行者123 更新时间:2023-11-29 14:34:01 26 4
gpt4 key购买 nike

如果我有一个包含这样的列名的表:

name,
name_raw,
item,
item_raw,
message,
message_raw
...
... etc.

如何动态地选择不以 _raw 结尾的每一列?

是这样的:

SELECT
[SOME REGEX LOGIC HERE]
FROM
mytable

或类似的可能吗?

最佳答案

如果您有太多的列以至于您无法编写(静态)查询,您可能必须更改数据库的架构。

如果您无法更改架构,这里有一个快速但肮脏的解决方案,它利用了 postgresql 的 JSON 功能。它不返回具有多列的传统表,而是返回包含 json 对象的单个列,该对象包含原始表中名称以 _raw 结尾的所有列。

SELECT (
SELECT json_object_agg(key,value)
FROM json_each(to_json(t))
WHERE key ~ 'raw$'
) FROM mytable;

想法是将 mytable 中的每一行转换为 JSON 对象,然后使用 JSON 函数过滤对象的成员。

关于sql - 如何在 Postgresql 中选择所有不包含某个子字符串的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47724677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com