Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在Ingres中检查空白日期值_Sql_Date_String_Ingres - Fatal编程技术网

Sql 如何在Ingres中检查空白日期值

Sql 如何在Ingres中检查空白日期值,sql,date,string,ingres,Sql,Date,String,Ingres,我有一个带有日期字段(数据类型IngreDate)的Ingres表,它有一个NOTNULL限制。但是,允许为空,即空值。 如何检查空白值 当然,使用ifnull()测试空值是不起作用的——如下例所示 INGRES TERMINAL MONITOR Copyright 2008 Ingres Corporation Ingres SPARC SOLARIS Version II 9.2.3 login continue create table test ( id integer not null

我有一个带有日期字段(数据类型IngreDate)的Ingres表,它有一个NOTNULL限制。但是,允许为空,即空值。 如何检查空白值

当然,使用ifnull()测试空值是不起作用的——如下例所示

INGRES TERMINAL MONITOR Copyright 2008 Ingres Corporation
Ingres SPARC SOLARIS Version II 9.2.3 login
continue
create table test ( id integer not null, date_field ingresdate not null with default )\g
insert into test (id, date_field) values ( 1, '' )\g
insert into test (id, date_field) values ( 2, '31/12/2014' )\g
continue
(1 row)
continue
select id, date_field, ifnull( date_field, '01/01/2014' ) as test_field from test\g
(1 row)
continue
+-----------------------------------------------------------------+
¦id           ¦date_field               ¦test_field               ¦
+-------------+-------------------------+-------------------------¦
¦            1¦                         ¦                         ¦
¦            2¦31/12/14                 ¦31/12/14                 ¦
+-----------------------------------------------------------------+
(2 rows)
continue
\q
Your SQL statement(s) have been committed.
Ingres Version II 9.2.3 logout
你可以用

select * from test where date_field = ''

事实上,多亏了PaulM,我才明白:

INGRES TERMINAL MONITOR Copyright 2008 Ingres Corporation
Ingres SPARC SOLARIS Version II 9.2.3 login

select id, date_field, 
case when date_field = '' then '01/01/2014' else date_field end as test_field 
from test
+-----------------------------------------------------------------+
¦id           ¦date_field               ¦test_field               ¦
+-------------+-------------------------+-------------------------¦
¦            1¦                         ¦01/01/14                 ¦
¦            2¦31/12/14                 ¦31/12/14                 ¦
+-----------------------------------------------------------------+
(2 rows)

Ingres Version II 9.2.3 logout

只是一个设计建议-在字段中允许NULL值,并插入NULL而不是空字符串。

您可以将字段转换为字符并对其进行计数

SELECT * FROM MyTable WHERE LENGTH(c(date_field)) > 0

每当日期字段不可为空时(我更喜欢这种方式),我都会使用Unix纪元日期/时间的开始(1970-01-01T00:00:00Z ISO 8601)来指示该字段尚未初始化。

您是否尝试过“is NULL”?是的,正如您在上面看到的那样,如果NULL(日期字段,'01/01/2014')也返回空值,我给你一个+1,但我真正想要的是我自己的答案中的case表达式。我没意识到你想要的是ifnull的等价物。本案例是一个很好的解决方案。有关StackOverflow的所有问题和答案都必须用英语。请不要用其他语言发布任何内容。