2012-02-12 66 views
4

我有一個名爲bbs的數據庫,它有37個表。 我想查找這些表中列名長度大於5的所有列!如何查找列名長度大於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

請嘗試我的解決方案。希望這是你正在尋找的。 – 2012-02-12 16:20:40

+1

+1 for rails :) – 2012-02-12 17:00:28

+0

是的,它的一個rails bbs應用程序!我想添加前綴到一些列,但我應該檢查哪種方式是最好的?更改數據庫或更改我的代碼。感謝您的回覆^ _ ^ – Neo 2012-02-12 17:38:08

回答

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
SELECT * 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE CHAR_LENGTH(COLUMN_NAME) > 5 
     AND TABLE_SCHEMA='YourDatabase'; 

未測試!找到this question並編輯查詢。像這樣的東西應該至少讓你開始:)

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)將導致str的字節大小。

相關問題