2014-07-02 66 views
1

我在DB2世界的新手,現在用: - C#VS2010與.NET Framework 4.0中如何將「Any()」和「All()」轉換爲DB2 SQL查詢?

  1. 我 - 爲.NET(IBM.Data.DB2.dll版本9.7.4.4) DB2數據提供我想翻譯下面的C#查詢語句:
TestQuery(() => db.Customers.Any()); 

到(DB2)的SQL查詢:

SELECT CASE WHEN (EXISTS(
    SELECT NULL 
    FROM "CUSTOMERS" t0 
)) THEN 1 ELSE 0 END AS "value" 

以上查詢適用於MS SQL troublefree。但DB2不接受查詢並引發錯誤[42601] [IBM] [DB2/NT64] SQL0104N

  1. 我得到 「所有()」
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()」和「All()」正確轉換爲DB2 SQL查詢?
任何幫助和提示,高度讚賞。 Thx提前。

回答

1

在DB2 SELECT必須是FROM的東西。您可以使用系統表SYSIBM.SYSDUMMY1是始終有1列:

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"