MySQL确定最长的VarChar长度

时间:2011-10-28 09:35:39

标签: mysql varchar

我正在尝试优化我的数据库。为此,我需要能够确定varchar列中最长的数据条目,然后将列定义修剪为恰好高于该值。

如何使用sql查找表中最长的varchar条目的长度?

CREATE TABLE `poller_output` (
  `local_data_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `rrd_name` varchar(19) NOT NULL DEFAULT '',
  `time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `output` varchar(200) NOT NULL DEFAULT '',
  PRIMARY KEY (`local_data_id`,`rrd_name`,`time`)
) ENGINE=MEMORY DEFAULT CHARSET=utf8

4 个答案:

答案 0 :(得分:19)

例如,如果您想知道字段output的最大长度,可以使用此查询:

SELECT Max(CHAR_LENGTH(`output`)) AS Max FROM `poller_output`

答案 1 :(得分:9)

您可以使用以下语句

执行此操作
SELECT column_name FROM database.table PROCEDURE ANALYSE(1,1);

此结果的Max_length值将为您提供该列中最长的varchar。

因此,在这种情况下,假设您要调查输出列,那么您可以运行以下

SELECT output FROM poller_output PROCEDURE ANALYSE(1,1);

这样做的好处是它还可以在返回值中为您提供最佳的字段类型,这将是

的内容。
VARCHAR(56) NOT NULL

答案 2 :(得分:0)

我将在我提出的问题中发布答案:

SELECT CHARACTER_MAXIMUM_LENGTH
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'Database'
    AND TABLE_NAME = 'Table'
    AND COLUMN_NAME = 'Field'

答案 3 :(得分:-3)

Aurelio的答案中的后退滴答和char_length函数都会导致错误。 This回答有效。