我想检查Redshift表中所有MAX(LENGTH)
列中的VARCHAR
,所以我想到了可以限制列大小的更好限制。 (现在所有列均为VARCHAR(65535)
)
我可以编写如下查询:
SELECT MAX(LENGTH(col1)), MAX(LENGTH(col2)), ...
FROM my_table
但是有没有一种方法可以写我的查询,因此它基本上说“对每个列都应用此”?我已经尝试过此post的答案,但似乎只适用于经典PostgreSQL
答案 0 :(得分:1)
您可以使用以下SQL生成您的选择
select sql from (
select 1 o, 'select ' sql
union
select 2, 'max(length('+attname+')),'
from pg_class c
join pg_attribute a on c.oid = a.attrelid
where relname = '<your_table>'
and attnum > 0
union
select 3, 'from <your_table>'
)
order by o
输出将如下所示
select
max(length(col1)),
max(length(col2)),
...
max(length(coln)), -- <- remove the last comma
from <your_table>
您可以运行此sql从表中获取所有最大长度
请告诉我这是否对您有帮助。