我使用MySQL在数据库中有几个表(引擎是MyISAM)。我试图在每一列中找到最长字符串的长度(所有数据都是文本)。现在,我正在尝试运行如下代码:
SELECT LENGTH(col) FROM schema.table ORDER BY LENGTH(col) DESC LIMIT 1;我一直在手动输入列名和表名。然而,继续这样做将需要永远的时间。
至少,是否有一种方法可以为变量赋值,并将col的两个实例替换为该变量,这样我就不必重复键入它了?
如果我可以对给定的表迭代所有列,并返回每个列中最长字符串的长度,那就更好了。
谢谢!
编辑: Hybridzz,这两个链接都解决不了我的问题;我似乎无法让MySQL接受变量赋值。
我还预先尝试了以下四种搜索:MySQL: Assign column value to variable
Setting columns variably in Mysql
https://stackoverflow.com/questions/2642677/how-to-use-database-name-as-a-value
发布于 2014-06-19 02:09:48
您想要的基本SQL是:
select max(length(col1)), max(length(col2)), . . .
from table t;通过查询varchar,可以获得表中所有列的表达式。
select group_concat('max(length(', column_name, '))' separator ', ')
from information_schema.column
where data_type = 'varchar' and table_name = 'table' and table_schema = 'schema';然后,可以将表达式复制到select中。或者将它们放入字符串并使用prepare。
https://stackoverflow.com/questions/24297528
复制相似问题