2014-02-16 46 views
0

我想要一個的Filemaker DB導入連接到SQL火鳥在DB左右逢源FM和出口回火鳥數據庫字段。 到目前爲止,它使用MBS插件,但FM 13 Pro canot可以處理NULLSQL選擇保留了那些爲NULL

這意味着例如Timestamp字段爲空(NULL)會產生"0"值。 這就是說在時間上有點像01.01.1889 00:00:00

所以我的想法是簡單地忽略包含NULL領域。

但在這裏我knowlege停止較差。

首先,我想我可以用WHERE做到這一點,但是這忽略了整個記錄集:

SELECT * FROM TABLE WHERE FIELD IS NOT NULL 

而且我想以後篩選這樣的:

If (IsEmpty (MBS("SQL.GetFieldAsDateTime"; $command; "FIELD") ) = 0 ; MBS("SQL.GetFieldAsDateTime"; $command; "FIELD")) 

沒有結果無論是。

+0

有沒有可能是空值是「空」的字符串值? – DaHoopster

+0

我使用了一個DB編輯器,它的NULL值不是「NULL」。 WHERE過濾器工作,但它過濾整個記錄,而不是單個字段,我真正需要做的。 –

+0

我不確定你可以忽略一個NULL是一個NULL。這意味着不同的記錄會有不同數量的字段。 如果timestamp字段爲NULL,則可以使用COALESCE以具有默認值。 – pscs

回答

0

我不知道特殊的SQL方言,但

SELECT field1, field2, value(field, 0), ...FROM TABLE 

應該可以幫助您: value給人的第一個參數,即你的領域,如果不爲空或第二個參數,如果它是。

+0

AHH!我沒有這樣想。但是,我應該真的使用0作爲NULL的參數嗎? –

+0

我試過這種方式,但它不起作用:SELECT FIELD1,VALUE(FIELD2,NULL)FROM TABLE。與0 –

+0

一樣,我去了槽火鳥手冊它接縫,這是行不通的。 –

2

這是一個直接的答案halfbit的建議,這是正確的,但不是這個SQL方言。在字段爲NULL時提供替換值的查詢中,需要使用COALESCE(x,y)。如果X爲空,則將使用Y,如果Y爲空,則該字段爲NULL。這就是爲什麼我常常使用它像COALESCE(table.field,''),這樣如果table.field碰巧是NULL,總會輸出一個常量。

select COALESCE(null,'Hello') as stackoverflow from rdb$database 

http://www.firebirdsql.org/refdocs/langrefupd15-coalesce.html

您可以使用COALESCE()以上兩種說法,我只用了兩個用於簡潔。

+0

我想我得到這個權利,所以我用從TABLE中選擇FIELD1,coalesce(null,'')作爲FIELD2。''表示不插入任何內容。但是仍然有接縫會將等同於函數NULL的東西插入到Filemaker字段中。我需要的是完全忽略它,所以它根本不會改變該領域。 –

+0

我想我有點困惑。 FIELD1可以爲空嗎?如果是這樣的話,你可能想要從表0123中選擇COALESCE(field1,'')作爲field2。 –

+0

@MichaelMüller'跳過'字段(除非你從select中排除它,否則這是不可能的),你仍然會在表中產生一個null插入它。 NULL表示未知或值不存在。如果您不需要'NULL',則需要使用特定的替換值,並且很可能Filemaker將空字符串和NULL作爲相同的值。 –