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