28

値と等しくなく、返されたデータに null を含む行を選択するにはどうすればよいですか? 私はもう試した:

SET ANSI_NULLS OFF
SELECT TOP 30 FROM Mails
WHERE assignedByTeam <> 'team01'

列assignedByTeamに 'team01' がない行を返したいのですが、null を含む結果も必要です。残念ながら、上記のコードは機能しません (null を返しません)。

MS SQL Server 2008 Express を使用しています。

4

5 に答える 5

30

NULL を明示的にチェックしてみてください。

SELECT TOP 30 col1, col2, ..., coln
FROM Mails
WHERE (assignedByTeam <> 'team01' OR assignedByTeam IS NULL)
于 2012-05-02T20:21:11.010 に答える
20
SELECT TOP 30 FROM Mails
WHERE ISNULL(AssignedByTeam,'') <> 'team01'

合体ステートメント バージョンを見ましたが、ISNULL() の方が効率的です。

于 2015-04-15T18:38:40.880 に答える
12

条件がたくさんある場合、すべてを 2 回入力するのは面倒です。2 つのより良い代替手段を次に示します。

SELECT TOP 30 FROM Mails
WHERE COALESCE(assignedByTeam,'') <> 'team01'

COALESCE 演算子は、リスト内の最初の null 以外の値を返します。assignedByTeam が null でない場合は、assignedByTeam の値を「team01」と比較します。ただし、assignedByTeam が null の場合、空白の '' と 'team01' が比較されます。これは基本的に次の省略形です。

SELECT TOP 30 FROM Mails
WHERE (CASE WHEN assignedByTeam IS NULL THEN '' ELSE assignedByTeam END) <> 'team01'

2 番目の方法は、条件を条件付きにすることです。次に例を示します。

SELECT TOP 30 FROM Mails
WHERE 1 = CASE WHEN assignedByTeam = 'team01' THEN 0 ELSE 1 END

この例では、「team01」と等しくないため、ELSE 値にはすべての null 行が含まれます。

于 2013-04-18T22:39:35.293 に答える
4
SELECT TOP 30 FROM Mails
WHERE assignedByTeam <> 'team01'
OR assignedByTeam is null
于 2012-05-02T20:21:20.013 に答える
2
 where column != 'value' or column is null
于 2012-05-02T20:19:52.810 に答える