SQL Serverのクエリでは、常に0の結果が得られます。私はメタデータを取得したいだけです。TSQLの読み取り可能な「常にfalse」の評価
TSqlで常に偽の評価を書き込む方法は?組み込みの関数があるか、そうすることをお勧めしますか?
現在、私はWHERE 1 = 0
を使用していますが、WHERE 'false'
のようなものを探しています。
SQL Serverのクエリでは、常に0の結果が得られます。私はメタデータを取得したいだけです。TSQLの読み取り可能な「常にfalse」の評価
TSqlで常に偽の評価を書き込む方法は?組み込みの関数があるか、そうすることをお勧めしますか?
現在、私はWHERE 1 = 0
を使用していますが、WHERE 'false'
のようなものを探しています。
あなたは、この目的のためにwhere 1 = 0
を使用することもできますが、私はtop 0
がより一般的だと思う:
select top 0 . . .
. . .
これもwhere
句で「事故」を防止します。あなたはこれを変更した場合:
where condition x or condition y
へ:
where 1 = 0 and condition x or condition y
括弧が間違っています。
DBMS、以下の1つ以上に応じて動作します:あなたが持つことができないよう
SELECT NULL LIMIT 0 (standard SQL syntax, e.g. PostgreSQL and MySQL)/SELECT TOP 0 1 (MS SQL Server syntax)
SELECT NULL WHERE FALSE (DBMS with a boolean type, e.g. PostgreSQL) SELECT NULL WHERE 1=0 (most DBMSes)
がOracleの場合、これらは、DUALからフォームSELECT NULLであることが必要になります、私は、信じていますいくつかの並べ替えのFROM句なしのSELECT;どのバージョンのLIMIT/TOPが受け入れられるかわからない。
より精巧なオプションは、彼らが何の値が含まれていないにもかかわらず、関連するタイプを持っているであろう、(一時的な)表を作成し、そこに任意の行を挿入しないで、あなたに任意の数の列を与えることができたことです。
-- PostgreSQL
CREATE TEMP TABLE dummy (a Int, b VarChar(42));
SELECT * FROM dummy;
-- MS SQL Server
CREATE TABLE #DUMMY (a Int, b VarChar(42));
SELECT * FROM #DUMMY;
In PostgreSQL, you can even create a table with no columns, allowing you to have a result set with zero rows and zero columns:
CREATE TEMP TABLE empty();
SELECT * FROM empty;
Another possibility is if the DBMS has set-returning functions, they may be able to return an empty set. For instance, again in PostgreSQL as it's what I know best, you can give an invalid range to generate_series():
SELECT * FROM generate_series(0,-1);
ヒント:質問を投稿する前に、GOOGLE。
SET FMTONLY ONをご覧ください。あなたがそれを設定し、クエリを実行する場合 メタデータだけは、私は0行を取得したいが、まだテーブルの*すべて*の列
USE AdventureWorks2012;
GO
SET FMTONLY ON;
GO
SELECT *
FROM HumanResources.Employee;
GO
SET FMTONLY OFF;
GO
非常にきれいな解決策です、ありがとう!私の特定のケースでは、悲しいことに、where節を使用する必要がありますが、 'FMTONLY'というキーワードが存在することは知っておいてよかったです! – slartidan
が返されます。私のdbms osのSQL Serverと述べたように。私はこの質問を投稿する前にグーグルで調べました。 – slartidan
次に* falseを選択してください。 –
'select * where false'は機能しません。これは質問がすべてであることです... – slartidan