我们可以在日期字段中存储除有效日期或空值以外的任何内容吗?

时间:2010-10-08 05:06:03

标签: oracle

我正在研究Oracle和Perl。我在表(A,B,C)中有三个字段,我想为表中的每一行使用“join”形成一个字符串a_b_c。 C指日期。它可以采用空值。在这种情况下,此“加入”将返回警告“在连接中使用未初始化的值”。我知道我必须选择nvl(C,something),这样当C为null时我得到a_b_something。如果我想区分这些行和其他行,你能告诉我那些“东西”是什么吗?

简而言之,我可以在日期字段中存储除有效日期或空值以外的任何内容吗?

2 个答案:

答案 0 :(得分:0)

  

我知道我必须选择nvl(C,某些东西)才能在C为空时获得a_b_something

选择不是存储列中的值,并且Oracle实际上将日期时间作为字符串传递回客户端,因此完全有可能只使用NVL(col, '')而不会混淆DBI所有

如果这不成功,你可以随时在SQL中构建整个过程:只需选择

A || '_' || B || '_' || (CASE WHEN C IS NULL THEN '' ELSE TO_CHAR(C) END)

作为您的专栏之一。

答案 1 :(得分:0)

正如OMG Ponies所说,你不能在Oracle的DATE字段中存储非日期。

正如hobbs暗示的那样,您可以使用NVL将空日期转换为字符串 - 例如,如果日期为空,NVL(TO_CHAR(C),'NULLDATE')将返回字符串“NULLDATE”。 / p>