我有一个快速的问题要求帮助。
在我的Postgres表中" user_profile"我跟随" video_uploaded"列定义为
id | character(19)
videos_uploaded | character(19)[] |
存储视频ID(固定长度为19个字符)。
当我在DAO界面中使用@SqlUpdate
函数编写array_append
时,如下所示
@SqlUpdate("UPDATE user_profile set videos_uploaded = array_append(videos_uploaded, :vid) where id = :id")
void appendVideoToUpload(@Bind("id") String id, @Bind("vid") String vid);
程序总是抛出以下异常
错误:函数array_append(character [],字符变化)不存在 !提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换
似乎要求添加显式类型转换,然后添加类似
的转换array_append(videos_uploaded::varchar[], :vid::varchar)
但仍然会发生类似的异常。任何熟悉这个问题的人都能提供一些快速帮助吗?谢谢!
罗伊
答案 0 :(得分:0)
Char和varchar是不同的数据类型,因此使用anyarray, anyelement
的函数将失败。两个参数必须是同一类型,因此您可以尝试
= array_append(videos_uploaded::varchar[], :vid)::char(19)[]
或
= array_append(videos_uploaded, (:vid)::char(19))
如果您的软件在参数和双冒号转换方面存在问题(可能因为参数是基于冒号的而不是基于问号的(?
),请改为使用CAST:
= CAST(array_append(CAST(videos_uploaded AS varchar[]), :vid) AS char(19)[])
或
= array_append(videos_uploaded, CAST(:vid AS char(19)))