У меня есть база данных с около 100 таблицами, и мне нужно создать запрос на соединение, чтобы получить конкретные данные из двух из них. Я знаю одно, но не другое. В основном мне нужно что-то вроде:
select <tables> from <database> where exists table.column name;
Как я могу это сделать?
Ответы:
С помощью
information_schema
Это совместимый со стандартами кросс-СУБД способ сделать это.
Вы можете увидеть это документально
источник
INFORMATION_SCHEMA
наш собственный @AaronBertrand ( sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/… )information_schema.columns
с 2006 года. Целое десятилетие, прежде чем он даже реализовал их. Если Microsoft SQL не поддерживает стандарт, возможно, нам следует обратить внимание на это. Другие делают.Для IBM DB2 вы бы использовали следующее:
Обратите внимание, что в DB2 имена столбцов будут в верхнем регистре, если они не были определены внутри двойных кавычек с чем-то отличным от верхнего регистра. Затем вы должны указать точный регистр имени столбца.
источник
WHERE UPPER(colname) = 'COLUMN_NAME'
.Приведенный ниже запрос должен дать вам то, что вы ищете:
Если вы ищете столбцы с точным именем, просто замените
WHERE
предложение на:источник
в Терадата 15:
источник
Oracle sql / plsql:
источник
Пожалуйста, передайте имя столбца этой переменной:
$COLUMN_NAME
источник
// Выбираем конкретную таблицу:
источник
Для SQL Server:
источник