null値を割引するためCOUNT(column)
、次を使用できます。
SELECT CASE WHEN COUNT(*) = COUNT(num) THEN MAX(num) ELSE "OK" END
FROM Test;
私が使用するDBMS(Informix)では、THENとELSEの型が同じである必要があるため、テストを行いました。
SELECT CASE WHEN COUNT(*) = COUNT(num) THEN CAST(MAX(num) AS CHAR(10)) ELSE "OK" END
FROM Test;
これは、キャストの冗長な方法の1つです(ただし、標準SQLです)。多くの場合、特定のDBMSで使用可能な省略形があります。
出力例:
+ CREATE TABLE Test(Num INTEGER);
+ INSERT INTO Test VALUES(1);
+ INSERT INTO Test VALUES(2);
+ INSERT INTO Test VALUES(3);
+ INSERT INTO Test VALUES(NULL);
+ INSERT INTO Test VALUES(5);
+ INSERT INTO Test VALUES(6);
+ SELECT CASE WHEN COUNT(*) = COUNT(num) THEN CAST(MAX(num) AS CHAR(10)) ELSE "OK" END
FROM Test;
OK
+ DELETE FROM Test WHERE Num IS NULL;
+ SELECT CASE WHEN COUNT(*) = COUNT(num) THEN CAST(MAX(num) AS CHAR(10)) ELSE "OK" END
FROM Test;
6