Postgresql 如何在更新期间将oid数据类型转换为varchar

Postgresql 如何在更新期间将oid数据类型转换为varchar,postgresql,Postgresql,我要更新列图像。\u名称数据类型为oid 使用image1列的数据类型为varchar 在更新过程中,我遇到了如下错误 更新mst_成员详细信息集image_name=image1 列“image”的类型为oid,但表达式的类型为character variable 您能告诉我如何显式转换数据类型吗?我假设image1是一个引用LOB的OID?如果是这样,您可能不想直接将其更新为varchar,因为您将获得转义二进制(可能是十六进制)。这是您希望在客户机库中执行的操作,而不是在db后端(如果这是

我要更新列图像。\u名称数据类型为oid 使用image1列的数据类型为varchar

在更新过程中,我遇到了如下错误

更新mst_成员详细信息集image_name=image1

列“image”的类型为oid,但表达式的类型为character variable


您能告诉我如何显式转换数据类型吗?我假设image1是一个引用LOB的OID?如果是这样,您可能不想直接将其更新为varchar,因为您将获得转义二进制(可能是十六进制)。这是您希望在客户机库中执行的操作,而不是在db后端(如果这是您的用例的话)

或者,您可以编写一个PL/Perl函数来取消二进制的scape,并使用lo_*函数来读取它,将它传递给PL/Perl并更新varchar,但是如果您有编码问题,则会失败,并且速度会很慢


如果您使用的是LOB,我建议您保持原样。

对不起,我不确定您的问题是否有意义。不能在OID类型的列中存储文本。您也不能在日期列中存储数字,也不能在数字列中存储点。你为什么要这么做?为什么image\u name不包含图像的名称(如果它是OID列,则不能包含)?