检查表列达到最大长度
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 。 . .这听起来像是一个不同的问题。这个问题肯定使用单数形式的“列”。 这是一个错字,我在正文中指定了“列”。对于那个很抱歉。更新主题以上是关于检查表列达到最大长度的主要内容,如果未能解决你的问题,请参考以下文章