如何使用concat或||运算符向PostgreSQL的bytea列插入文本并解决类型报错
报错原因
PostgreSQL的concat函数和||运算符拼接字符串后返回的是text类型,而你目标列是bytea二进制类型,数据库不会默认做隐式类型转换,因此抛出类型不匹配错误。
解决方案
你只需要在拼接完成后,显式将文本转换为bytea类型即可,推荐使用convert_to函数指定编码转换,避免乱码问题:
普通插入语句写法
-- concat写法 insert into test(name) values(convert_to(concat('abac-' , 'test123'), 'UTF8')); -- ||运算符写法 insert into test(name) values(convert_to('aa' || 'bb', 'UTF8'));
存储过程内拼接行字段写法
convert_to(concat('abac-' , row.name , 'test123'), 'UTF8')
如果不需要指定编码,也可以直接做类型强转,效果等价:
concat('abac-' , row.name , 'test123')::bytea
内容的提问来源于stack exchange,提问作者Arav
相关产品推荐
相关产品推荐

