Как найти все столбцы, длина имени которых превышает 5? - PullRequest
4 голосов
/ 12 февраля 2012

У меня есть база данных с именем 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 ]

2 голосов
/ 12 февраля 2012
SELECT *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE CHAR_LENGTH(COLUMN_NAME) > 5
        AND TABLE_SCHEMA='YourDatabase';

Не проверено! Нашел этот вопрос и отредактировал запрос. Примерно так должно, по крайней мере, начать вас:)

1 голос
/ 12 февраля 2012

Просто запросите базу данных 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.

1 голос
/ 12 февраля 2012

Здесь вы можете изменить только имя вашей базы данных (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...