检查表列达到最大长度

Posted

技术标签:

【中文标题】检查表列达到最大长度【英文标题】:Check table columns reached max length 【发布时间】:2015-02-23 11:28:33 【问题描述】:

只是想知道是否有办法检查表的列是否达到最大长度。

通过以下我能够得到表格列的长度

SELECT MAX(CHARACTER_MAXIMUM_LENGTH) AS LEN, COLUMN_NAME
FROM information_schema.columns
WHERE table_name IN ('TableA')
GROUP BY COLUMN_NAME 
ORDER BY LEN DESC

然后我想用数据检查这些列是否达到其最大长度

下面给出一列的最大长度

SELECT MAX(LENGTH(Col1))
FROM TableA

WHERE子句中不能使用聚合函数,怎么可能?

谢谢

【问题讨论】:

使用having子句将聚合函数与条件结合使用。 你希望输出是什么样的? 【参考方案1】:

您可以使用join 将数据汇集在一起​​:

SELECT MaxLen, ActualLen
FROM (SELECT MAX(CHARACTER_MAXIMUM_LENGTH) AS MaxLen, COLUMN_NAME
      FROM information_schema.columns
      WHERE table_name IN ('TableA') AND COLUMN_NAME = 'COL1'
     ) m CROSS JOIN
     (SELECT MAX(LENGTH(Col1)) as ActualLen
      FROM TableA
     ) c;

我不确定您真正想要返回什么。如果您想要具有最大值的行:

select a.*
from tablea a
where length(col1) = (SELECT MAX(CHARACTER_MAXIMUM_LENGTH) AS MaxLen
                      FROM information_schema.columns
                      WHERE table_name IN ('TableA') AND COLUMN_NAME = 'COL1'
                     );

【讨论】:

感谢您的回复。该解决方案仅适用于一列。我对表中的所有列都这样做了。这可能吗? @MPH 。 . .这听起来像是一个不同的问题。这个问题肯定使用单数形式的“列”。 这是一个错字,我在正文中指定了“列”。对于那个很抱歉。更新主题

以上是关于检查表列达到最大长度的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JdbcTemplate 检查表列是不是存在?

如何检查表列中的三个日期是不是连续月份

SQL Server:检查表列是不是存在并删除行

在 BigQuery SQL 中:在满足日期约束时检查和更新表列值

用于检查工作表列值的 Google 脚本

已达到调试最大连接池