基本上,我有一个表,其中填充了大约 300 万行,并且我需要知道每列的字符长度。考虑到该表中有 138 列,如何在一个查询中获取这些值? 结果会是这样的:
+----------+-----------------+---------------|
| col_name | min_char_length |max_char_length|
+----------+-----------------+---------------|
| col1 | 10 | 20 |
+----------+-----------------+---------------|
| col2 | 1 | 15 |
+----------+-----------------+---------------|
提前谢谢您。
最佳答案
我不知道任何直接的方法,但您可以生成这样的问题查询。
解决方案
SELECT CONCAT(GROUP_CONCAT(
CONCAT('(SELECT \'',COLUMN_NAME,'\' AS `column`, MAX(LENGTH(`',COLUMN_NAME,'`)) AS `max_length`, MIN(LENGTH(`',COLUMN_NAME,'`)) AS `min_length` ',
'FROM `',TABLE_SCHEMA,'`.`',TABLE_NAME, '`)')
SEPARATOR ' UNION ALL '), ';') AS sql_query
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'db_name' AND TABLE_NAME = 'table_name';
增加 GROUP_CONCAT() 的限制
GROUP_CONCAT()返回的最长字符串默认为1024。因此,您需要增加此限制。
示例:
SET group_concat_max_len = 1024;
希望我能帮到你。
关于MySQL查询所有列的最小和最大字符长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46446565/