You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中如何对字符串列表应用UPPER/LOWER函数?

解决PostgreSQL中UPPER函数无法直接用于IN子句多值的问题

你遇到的问题是因为UPPER()函数仅支持单个输入参数,不能直接传入多个字符串作为参数,所以直接写IN UPPER(...)会触发语法错误。下面提供几种可行的解决方式:

方法1:为每个字符串单独调用UPPER函数

直接给IN子句里的每个字符串都套上UPPER(),这是最直观的写法:

select distinct(tx.sub_tran_type)  
from tran.txn tx
where tx.sub_tran_type in (UPPER('homede'), UPPER('online'), UPPER('omni-online'), UPPER('amznow'))            
limit 100

方法2:用数组+UNNEST批量处理

如果需要处理的字符串数量较多,可以先把它们放进数组,再用UNNEST展开后统一转大写,写法更简洁:

select distinct(tx.sub_tran_type)  
from tran.txn tx
where tx.sub_tran_type in (
    SELECT UPPER(unnest(ARRAY['homede','online','omni-online','amznow']))
)            
limit 100

方法3:反转处理逻辑(注意性能影响)

也可以把字段sub_tran_type转成大写,再和原字符串的大写形式比较,但这种写法会导致字段上的索引无法被使用(如果有索引的话),数据量大时可能变慢:

select distinct(tx.sub_tran_type)  
from tran.txn tx
where UPPER(tx.sub_tran_type) in ('HOMEDE','ONLINE','OMNI-ONLINE','AMZNOW')            
limit 100

内容的提问来源于stack exchange,提问作者Jagvir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:45:30