PostgreSQL报错:无法将text[]转为uuid,ANY查询出错求助
问题分析与修正
你的SQL存在两处错误,分别导致了类型转换报错和逻辑判断问题:
- 类型转换错误:你传入的
$1是文本格式的UUID数组,直接写$1::uuid是试图把整个数组转换成单个UUID类型,这必然失败。正确的做法是将数组转换成UUID数组,即使用$1::uuid[]。 - NULL判断错误:SQL中判断字段是否为NULL不能用
=,因为NULL不等于任何值(包括自身),必须用IS NULL来做判断。
修正后的SQL语句:
SELECT c.name FROM cars c LEFT JOIN location_orders_cars loc ON loc.car_id = c.id WHERE loc.user_id = ANY($1::uuid[]) AND loc.location_orders_id = $2 AND loc.is_back IS NULL LIMIT 10;
如果使用ORM或客户端框架传入参数,需确保参数本身是正确的数组格式,避免额外的类型冲突。
内容的提问来源于stack exchange,提问作者oemer ok
相关产品推荐
相关产品推荐

