加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

参数和NULL

发布时间:2020-12-13 16:03:14 所属栏目:百科 来源:网络整理
导读:我使用RPostgres和RPostgreSQL将NULL作为INSERT参数查询传递时遇到问题: 在PostgreSQL中: create table foo (ival int,tval text,bval bytea); 在R: 这有效: res - dbSendQuery(con,"INSERT INTO foo VALUES($1,$2,$3)",params=list(ival=1,tval= 'not q
我使用RPostgres和RPostgreSQL将NULL作为INSERT参数查询传递时遇到问题:

在PostgreSQL中:

create table foo (ival int,tval text,bval bytea);

在R:

这有效:

res <- dbSendQuery(con,"INSERT INTO foo VALUES($1,$2,$3)",params=list(ival=1,tval= 'not quite null',bval=charToRaw('asdf')
                               )
                    )

但这会引发错误:

res <- dbSendQuery(con,params=list(ival=NULL,bval=charToRaw('asdf')
                               )
                   )

使用RPostgres,错误消息是:

Error: expecting a string

在RPostgreSQL下,错误是:

06003

替换NA对我来说没问题,但它不是一种解决办法 – 文字’NA’被写入数据库.

使用例如整数(0)给出相同的“期望字符串”消息.

解决方法

这里有一个选项来解决不知道如何在R中明确表示PostgresSQL pacakge能够成功转换的NULL值的问题,就是不要在数据库中指定要在其值中为NULL的列.

所以在你的例子中你可以使用这个:

res <- dbSendQuery(con,"INSERT INTO foo (col2,col3) VALUES($1,$2)",params=list(tval = 'not quite null',bval = charToRaw('asdf')
                          )
                  )

当你想让col1有一个NULL值.这当然假设表中的col1可以为空,这可能不是这种情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读