首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL集表/列为变量

问MySQL集表/列为变量
EN

Stack Overflow用户
提问于 2014-06-19 01:44:14
回答 1查看 1.6K关注 0票数 0

我使用MySQL在数据库中有几个表(引擎是MyISAM)。我试图在每一列中找到最长字符串的长度(所有数据都是文本)。现在,我正在尝试运行如下代码:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-19 02:09:48

您想要的基本SQL是:

代码语言:javascript
复制
select max(length(col1)), max(length(col2)), . . .
from table t;

通过查询varchar,可以获得表中所有列的表达式。

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24297528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档