Какой предпочтительный способ вернуть пустую таблицу в SQL? - PullRequest
10 голосов
/ 26 февраля 2009

Я знаю, что могу вернуть пустую таблицу, используя следующий запрос:

select * from tbFoo where 1=2

но этот код мне не нравится.

Есть ли «стандартный» способ сделать это?

Если вам интересно, почему я хочу сделать такую ​​странную вещь, это потому что Я не могу назвать таблицы данных, которые я возвращаю из хранимой процедуры , поэтому мне нужны пустые заполнители.

Ответы [ 3 ]

25 голосов
/ 26 февраля 2009

Просто запустив оба:

SELECT TOP 0 * FROM Table
and
SELECT * FROM Table WHERE 1=0

Они производят точно такой же план выполнения.

1 голос
/ 26 февраля 2009

Что вам действительно нужно, так это information_schema, использование которого позволит вам определить определение таблицы.

Вы не упоминаете, какую базу данных вы используете, поэтому вот ссылка о information_schema поддержке MySQL, PostgreSQL (и MSSQL, Oracle, Etc)

Пример с сайта;

SELECT table_name, column_name, is_nullable, data_type, character_maximum_length
FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'employees'

В вашем случае все, что вам нужно, это имена столбцов;

SELECT column_name 
FROM INFORMATION_SCHEMA.Columns
WHERE table_name = 'employees'
1 голос
/ 26 февраля 2009

В большинстве случаев я вижу 1 = 0, но да, это в значительной степени стандартный подход, когда вам действительно нужно. Хотя в действительности это редкость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...