我正在尝试将Filemaker DB连接到Firebird SQL DB两种方式导入到FM并导出回Firebird DB。
到目前为止,它使用MBS插件,但FM 13 Pro canot处理NULL
。
这意味着例如空(NULL
)的Timestamp字段产生"0"
值。
多数民众赞成在时间上像01.01.1889 00:00:00
。
所以我的想法是简单地忽略包含NULL
的字段。
但在这里,我可怜的知识停止了。
首先我认为我可以使用WHERE
执行此操作,但这忽略了整个记录集:
SELECT * FROM TABLE WHERE FIELD IS NOT NULL
我也试着稍后过滤它:
If (IsEmpty (MBS("SQL.GetFieldAsDateTime"; $command; "FIELD") ) = 0 ; MBS("SQL.GetFieldAsDateTime"; $command; "FIELD"))
没有结果。
答案 0 :(得分:2)
这是对halfbit建议的直接回答,这是正确的但不适用于这种SQL方言。在字段为NULL时提供替换值的查询中,您需要使用COALESCE(x,y)。如果X为null,则使用Y,如果Y为null,则该字段为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()用于两个以上的参数,我只使用了两个用于简洁。
答案 1 :(得分:0)
我不知道特殊的SQL方言,但是
SELECT field1, field2, value(field, 0), ...FROM TABLE
应该帮助你:
value
给出第一个参数,即,如果它是NOT NULL则为您的字段,如果是,则为第二个参数。