8

空またはnullの列を含む行を選択するにはどうすればよいですか?

テーブルに対してチェックを実行しようとしています。このチェックでは、行のいずれかに値を保持しない列が含まれているかどうかを確認します。

表の例:デモ

+----+------+------+
| ID | col1 | col2 |
+----+------+------+
| 1  | VAL1 | Val2 |
| 2  | NULL | Val2 |
| 3  | VAL1 | NULL |
+----+------+------+

クエリが行2〜3​​を返すようにしたいのですが、実際のテーブルには多くの列があるので、「whereまたは」を使用してクエリに含めたくないことに注意してください。

mysqlで実行できますか?

4

4 に答える 4

10
select * from tablename where col1 is NULL or col2 is NULL

結果

 ID | col1  | col2
 ------------------     
 2  | NULL  | Val2     
 3  | VAL1  | NULL
于 2013-01-01T16:48:47.530 に答える
5

本当にORを使用したくない場合は、次のように使用できます。

SELECT *
FROM demo
WHERE concat(col1, col2, ...) is Null

またはこれ:

SELECT *
FROM demo
WHERE col1+col2+... is null

ただし、クエリの記述は簡単になりますが、高速になるわけではありません。ORを使用することをお勧めします。

于 2013-01-01T17:06:02.800 に答える
5

列名をハードコーディングする必要がない最良の答えは次のとおりです。

DECLARE @sqlStr VARCHAR(max) = (
        SELECT stuff((
                    SELECT 'and ' + c.NAME + ' is null '
                    FROM sys.columns c
                    WHERE object_name(object_id) = 'yourtablename'
                    ORDER BY c.NAME
                    FOR XML PATH('')
                    ), 1, 3, '')
        )

SET @sqlStr = 'select * from ' + yourtablename + ' where ' + @sqlStr

PRINT @sqlStr

EXEC (@sqlStr)
于 2016-04-08T18:03:34.210 に答える
-2
SELECT 
    IFNULL(col1,0),
    IFNULL(col2,0)
FROM mytable
WHERE col1 IS NULL or col2 IS NULL

IFNULLを使用してデフォルト値を設定できます

于 2013-01-01T16:50:10.697 に答える