私は年齢のリストを含むテーブルを持っていますが、この列はNULLSを持つことができるというクエリを持っています。私は18歳以上のユーザーを含む結果を得ようとしています。ユーザーの年齢がNULLであれば、その結果も欲しいと思います。ここでは、以下で何をしようとしているのか、その結果を簡略化したものです。範囲または列の列名を検索する方法はnullです
SELECT * FROM TABLE WHERE (Table.Column >= 18 OR Table.Column IS NULL)
-Returnsすべての年齢層のユーザーとヌル
SELECT * `FROM TABLE WHERE ((Table.Column >= 18) OR (Table.Column IS NULL))
-Returnsすべての年齢層のユーザーとヌルが
SELECT * FROM TABLE WHERE (Table.Column >= 18 NOT BETWEEN 1 AND 17)
-Returnsユーザーのみ18+は、NULLS
を返しません。SELECT * `FROM TABLE WHERE ((Table.Column >= 18)
- 返品のみユーザー18+はNULLを返しません
何が起こっているかについての洞察は祝福になります。これは1300行のクエリの一部であり、これは私がそれを単純化することができる最高です。私はあなたが説明することができない、そしておそらくハッキーな仕事が順調に進んでいるかもしれないことを心に留めておく必要があるかもしれません。
詳細については、擬似コードでは全体のクエリは次のとおりです。私の場合のために
SELECT ColumnA, ColumnB,
CASE
WHEN (Condition 1),
WHEN (Condition 2)
ELSE 'N/A' END AS [Complete],
CASE
WHEN (Condition 1),
WHEN (Condition 2)
ELSE Column END AS [Column],
ColumnC, ColumnD
FROM
LEFT OUTER JOIN Table A on A.Column = B.Column
LEFT OUTER JOIN Table C on A.Column = B.Column
LEFT OUTER JOIN Table D on A.Column = C.Column
WHERE (
Condition1,
and Condition2,
and (Table.Column >= 18 OR Table.Column IS NULL)
)UNION
SELECT
MAX([column]) AS [column],
MAX([MyColumn] AS [My Column],
FROM (
SELECT
column],
MyColumn,
CASE
WHEN (Condition 1),
WHEN (Condition 2)
else 'N/A' end as [Complete]
CASE
WHEN (Condition 1),
WHEN (Condition 2)
ELSE Column END AS [Column],
Column3
WHERE (Condition1)
AND Condition2
)
and (Table.Column >= 18 OR Table.Column IS NULL)
GROUP BY [ColumnName]
UNION
SELECT * FROM TABLE
私は自分を置きますNUMBER型の私は思いますか? –
dbmsに応じてCOALESCEまたはIS NULLを使用するのはなぜですか? SQLServer .... SELECT * FROM TABLE WHERE COALESCE(Table.Column、18)> = 18 18 + sとNULLを取得します。 NULLを除外したい場合..... SELECT * FROM TABLE WHERE COALESCE(Table.Column、17)> = 18 – AntDC
WHERE Table.Column IS NOT NULLを指定する方法はありますか?Table.Columnを指定する必要があります> = 18? –