如何找到列名长度大于5的所有列?

时间:2012-02-12 16:01:43

标签: mysql sql schema

我有一个名为bbs的数据库,它有37个表。 我想查找这些表中列名长度大于5的所有列!

mysql> show tables;
+---------------------+
| Tables_in_rails_bb  |
+---------------------+
| articles            |
| articles_categories |
| bookmarks           |
| categories          |
| comments            |
| drafts              |
| extension_groups    |
| extensions          |
| forum_tracks        |
| forums              |
| icon_items          |
| icons               |
| levels              |
| management_groups   |
| management_logs     |
| message_folders     |
| message_tos         |
| messages            |
| moderators          |
| posts               |
| replies             |
| reports             |
| roles               |
| roles_users         |
| schema_migrations   |
| sessions            |
| smiles              |
| subscribes          |
| system_configs      |
| topic_tracks        |
| topics              |
| upload_files        |
| users               |
| users_forums        |
| users_topics        |
| warnings            |
| word_replacements   |
+---------------------+
37 rows in set (0.25 sec)

如何编写sql?

3 个答案:

答案 0 :(得分:2)

SELECT *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE CHAR_LENGTH(COLUMN_NAME) > 5
        AND TABLE_SCHEMA='YourDatabase';

未经测试!找到this question并编辑查询。这样的事情至少应该让你开始:)

答案 1 :(得分:1)

这里你唯一要改变的是数据库的名称(Table_NameColumn_Name是固定的)。试试这个:

SELECT Table_Name, Column_Name 
FROM information_schema.columns
WHERE table_schema = 'databaseName' -- <= Database Name Here
HAVING CHAR_LENGTH(COLUMN_NAME) > 5
ORDER BY Table_Name, Column_Name

或者您也可以选择所有字段

SELECT * 
FROM information_schema.columns
WHERE table_schema = 'databaseName' -- <= Database Name Here
HAVING CHAR_LENGTH(COLUMN_NAME) > 5
ORDER BY Table_Name, Column_Name

答案 2 :(得分:1)

只需查询information_schema数据库:

mysql> connect information_schema;
mysql> select table_name, column_name from columns where table_schema = 'bbs' and char_length(column_name) > 5;

考虑到char_length(str)将为您提供str所具有的字符数,而length(str)将导致str的字节大小。