我是DB2世界的新手,正在使用: - DB2 Data Provider for .NET(IBM.Data.DB2.dll版本9.7.4.4) - 使用.NET Framework 4.0的C#VS2010
TestQuery(() => db.Customers.Any());
到(DB2)SQL查询:
SELECT CASE WHEN (EXISTS(
SELECT NULL
FROM "CUSTOMERS" t0
)) THEN 1 ELSE 0 END AS "value"
上面的查询适用于 MS SQL无故障。但 DB2不接受该查询并引发ERROR [42601] [IBM] [DB2 / NT64] SQL0104N
TestQuery(() => db.Customers.All(c => c.ContactName.StartsWith("a")));
(DB2)SQL查询:
SELECT CASE WHEN (NOT (EXISTS(
SELECT NULL
FROM "CUSTOMERS" t0
WHERE NOT ((t0."CONTACTNAME" LIKE :p0 || '%'))
))) THEN 1 ELSE 0 END AS "value"
我的问题:如何翻译" Any()"和"所有()"正确地进行DB2 SQL查询?
任何帮助和提示都非常感谢。 Thx提前。
答案 0 :(得分:1)
在DB2中SELECT
必须是FROM
。您可以使用始终有1行的系统表SYSIBM.SYSDUMMY1
:
SELECT CASE WHEN (EXISTS(
SELECT NULL
FROM "CUSTOMERS" t0
)) THEN 1 ELSE 0 END AS "value"
FROM SYSIBM.SYSDUMMY1
或使用VALUES
声明:
VALUES
CASE WHEN (EXISTS(
SELECT NULL
FROM "CUSTOMERS" t0
)) THEN 1 ELSE 0 END AS "value"