關於表示式與資料提供程式

大多數表示式函式在所有資料提供程式中具有相同的行為方式,但也會有例外。

不受支援的函式

建立篩選或建立計算的性質時,您可以使用任何函式。這些結果不會被儲存回資料倉庫。但是,在 AutoCAD Map 3D 中,如果您使用傳回不受支援資料類型的函數將值插入「資料表」,則將導致異常。此作業對資料 Provider 無效。例如,SHP 檔不支援 FdoInt16FdoDouble 資料類型。如果您嘗試將該資料類型的值回存至 SHP 資料倉庫,則會發生錯誤。

ODBC Provider

在 AutoCAD Map 3D 中,您可於實際連接至資料倉庫之前套用表示式。例如,您可以使用查詢將圖徵加入至地圖。這種狀況可能是 ODBC Provider 的一個問題 (會連接至多個資料來源)。並非所有 ODBC 來源都支援表示式函數。因此,在任何情況下均會將函式做為表示式建置過程的一部分進行演算,即使所連接的資料來源可以支援表示式函式的支援。

Soundex

Soundex 函式從建立之初就可被所有關連式資料庫管理系統 (RDBMS) 支援。基礎 RDBMS 可演算所有包括此函數的表示式。但是,由 MySQL Provider 傳回的結果可能與您從其他提供程式接收到的結果有所不同。

布林值表現法

SDF Provider 與 SHP Provider 以詞語 TRUE 和 FALSE 來表示布林值。RDBMS Provider 以 0 和 1 來表示布林值。此差異會影響標示的顯示。例如,以下表示式定義了一個指示閥是否開啟的標示:

Concat('Valve is open: ', <valve_status_property>)

對於 SDF 和 SHP 資料,該標示將為「Valve is open: True」。對於 RDBMS 資料,該標示將為「Valve is open: 1」。

AddMonths 與 MonthsBetween

AddMonths 與 MonthsBetween 函式不考慮天數資訊,但在 RDBMS 系統中會考慮。

例如,對於表示式 AddMonths(<date_property>, 88.7),RDBMS Provider 可能會在提供的日期上加上 88.7 個月。而您在產品中建立的表示式中的函式僅會加上 88 個月。

同樣,對於表示式 MonthsBetween(<date_1>, <date_2>),RDBMS Provider 可能會傳回值 77.4。而您在產品中建立的表示式中的函數會傳回 77。

以快取記憶體為基礎的作業與 RDBMS 式作業

某些作業 (例如,計算的性質的建立) 是以快取記憶體為基礎的作業,並使用表示式建置程序進行演算。其他作業 (例如,RDBMS 資料倉庫上的篩選) 使用基礎 RDBMS 系統。

由於 Provider 之間的差異,結果會有所不同。例如,如果您連接至 MySQL 資料倉庫,則可以建立兩個計算的性質:CP1 與 CP2。CP1 由表示式 Soundex(<property>) 定義,CP2 由表示式 Soundex(<literal>) 定義。在「資料表」中,CP1 和 CP2 的值可能是相同的。但是,如果您使用包含表示式 Soundex(<property>) = Soundex(<literal>) 的篩選,則所得的值可能會有所不同。在 AutoCAD Map 3D 中,在 「資料表」中,表示式建置程序會演算表示式。MySQL 資料倉庫 (使用其他函數定義) 會演算篩選。