2

我经常有这种 SQL 语句

SELECT LENGTH(col_name) FROM `table` WHERE *condition*

确定 mySQL 表的给定行中特定列的内容的大小。但是,我不清楚是否有一条 SQL 语句可以获取给定行中所有列的内容长度之和。我应该补充一点,所有有问题的列都是 VARCHARS。

是的,我知道我可以通过获取整行来做到这一点

SELECT * FROM `table` WHERE *condition*

将生成的行内容折叠成一个字符串并获取该字符串的长度,但我想知道是否没有更有效的衬线来完成这项工作。任何提示将不胜感激。

4

3 回答 3

5

好吧,我更喜欢使用CHAR_LENGTHoverLENGTH

SELECT CHAR_LENGTH(CONCAT(col1,col2,col3)) 
FROM tableName 
WHERE...

链接的问题

LENGTH() 返回以字节为单位的字符串长度。

CHAR_LENGTH() 返回以字符为单位的字符串长度。

于 2012-11-16T08:05:15.450 回答
1

在不进入列名的情况下尝试此解决方案:

SELECT SUM(character_maximum_length) length,
  table_name
  FROM information_schema.columns 
  WHERE table_name='your_table_name_here'
  AND table_schema=DATABASE()
  -- AND column_name IN ('choose', 'columns')
  GROUP BY table_name;
于 2018-10-17T14:12:43.143 回答
0

你有没有尝试过:

SELECT char_length(col_name)+char_length(col_name2) FROM tableWHERE条件

于 2012-11-16T08:03:26.267 回答