web-dev-qa-db-fra.com

Trouver toutes les tables dont le nom se termine par un certain suffixe

J'ai des milliers de tables dans la base de données. Certains noms se terminent par _History.

Par exemple :

abc_History
bcd_History
123_History

Comment trouver toutes les tables dont le nom se termine par _History.

Quelque chose comme:

SELECT
table_name
FROM sys.tables WHERE table_name LIKE '_History%'

Et

error : Invalid column name 'table_name'.
9
Shree

Essaye ça:

SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.tables 
WHERE TABLE_NAME LIKE '%_History'

OU

SELECT name
FROM sys.tables
WHERE name LIKE '%_History'
16
Saharsh Shah

Merci à @ Saharsh-shah.

Pour obtenir le nom de la table avec tous les noms de colonnes dans la même requête, utilisez ceci:

SELECT 
    `TABLE_NAME`,
    group_concat(`COLUMN_NAME` separator ',') AS `COLUMNS`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_NAME` IN(
    SELECT TABLE_NAME
        FROM INFORMATION_SCHEMA.tables 
        WHERE `TABLE_NAME` LIKE '%_History'
    )
GROUP BY `TABLE_NAME`

Vous pouvez le placer très simplement dans un tableau multidimensionnel PHP avec les éléments suivants:

$tables['columns'] = explode(',', $tables['columns']);

J'espère que cela peut aider certains.

0
Meloman