如何在postgreSQL中将''转换为NULL

3

我有一张postgreSQL表格,接受的日期格式为yyyy-mm-dd,如果传入的日期格式是''(没有日期),则无法接受。可能会出现一些情况,''会作为日期传递。有人可以帮我编写一个函数吗?检查传入的日期是否为'',然后将其替换为NULL,然后将其添加到数据库中。


1
如果该列为“非空”,您将如何将其添加到数据库中? - Mureinik
抱歉表述不够清晰。我已经更新了文本。我的意思是当传递一个空日期时。 - Morpheus
你可以展示你的插入或更新脚本吗? - Vivek S.
这是一个tcl命令:update control_tracker set date='[regsub -all {\s} [string trim [regsub {\{.*} $whens1_12 ""]] "-" ]' - Morpheus
日期没有“格式”。因此,“接受yyyy-mm-dd格式的日期”并没有真正意义。那个列到底是哪种数据类型? - user330315
2个回答

4

使用nullif()函数

insert into the_table (the_date_column)
values (nullif(?, ''))

或者进行更新

update the_table
  set the_date_column = nullif(?, '');

0
你可以使用 case 表达式来检查这个。我正在使用 :arg 来表示输入的字符串 - 根据你所使用的编程语言进行更改:
INSERT INTO mytable
(my_date_col)
VALUES (CASE LENGTH(:arg) WHEN 0 THEN NULL ELSE TO_DATE(:arg, 'yyyy-mm-dd' END)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接