#mysql
Вопрос:
Мне нужно было бы найти все экземпляры %phone% из всех таблиц в определенной базе данных.
Это мой сценарий, с которым я пытаюсь работать, но все еще получаю все базы данных (мне нужно только из DB1).:
use DB1;
SELECT *
FROM
information_schema.columns
WHERE
column_name LIKE '%phone%';
Я тоже пытался писать так:
SELECT *
FROM
DB1.information_schema.columns
WHERE
column_name LIKE '%phone%';
но у меня есть пятерка SQL Error [1064] [42000]
за этот синтаксис.
Каков был бы правильный способ запросить это?
Ответ №1:
INFORMATION_SCHEMA
Для всех баз данных на сервере существует только одна база данных. База данных таблиц находится в table_schema
столбце columns
таблицы.
SELECT *
FROM information_schema.columns
WHERE table_schema = 'DB1' AND column_name LIKE '%phone%';
Комментарии:
1. Так просто и красноречиво, спасибо.
Ответ №2:
Я использовал следующее для » %email%», и это сработало.
Так что, я думаю, это было бы и для тебя тоже:
SELECT
DISTINCT TABLE_NAME
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
COLUMN_NAME LIKE ('%phone%') AND TABLE_SCHEMA='DB1';
Ответ №3:
используйте параметр TABLE_SCHEMA, чтобы выбрать вашу схему/базу данных
SELECT *
FROM
information_schema.columns
WHERE
column_name LIKE '%phone%'
AND TABLe_SCHEMA = 'DB1';