我有一个名为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?
答案 0 :(得分:2)
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE CHAR_LENGTH(COLUMN_NAME) > 5
AND TABLE_SCHEMA='YourDatabase';
未经测试!找到this question并编辑查询。这样的事情至少应该让你开始:)
答案 1 :(得分:1)
这里你唯一要改变的是数据库的名称(Table_Name
,Column_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的字节大小。