PostgreSQL中如何对text[]类型数组执行initcap操作?
解决text[]类型字段元素首字母大写的更新方法
直接用initcap()无法处理数组类型,你可以通过拆解数组→处理每个元素→重新组装数组的方式实现,具体SQL如下:
UPDATE locations SET aka = ( SELECT array_agg(initcap(elem)) FROM unnest(aka) AS elem );
或者更简洁的写法:
UPDATE locations SET aka = array(SELECT initcap(unnest(aka)));
关键逻辑说明
unnest(aka):将text[]类型的aka字段拆解为单行的文本元素initcap(elem):对每个拆解出的文本元素执行首字母大写转换array_agg(elem)/array(SELECT ...):把处理后的单个文本元素重新组装为text[]数组
如果数组包含空元素或NULL值,initcap()会原样保留,无需额外处理。
内容的提问来源于stack exchange,提问作者Aguilaair
相关产品推荐
相关产品推荐

