MySQL将表/列设置为变量

时间:2014-06-19 01:44:15

标签: mysql sql

我在使用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

mysql, iterate through column names

1 个答案:

答案 0 :(得分:0)

您想要的基本SQL是:

select max(length(col1)), max(length(col2)), . . .
from table t;

您可以通过查询varchar获取表格中information_schema.columns的所有列的表达式:

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