PostgreSQL查询返回数组时获取array_length的正确语法是什么
SQL获取返回数组长度的实现方案
适用PostgreSQL(与你给出的原语法适配度最高)
你原查询返回的是一维数组,直接使用array_length()函数即可,该函数第二个参数指定数组维度,一维数组填1:
SELECT array_length( ARRAY( SELECT journeys.id FROM JOURNEYS JOIN RESPONSES ON scenarios[1] = responses.id WHERE channel_name = 'channel1' ORDER BY journeys.id ), 1 ) AS journey_array_length;
优化提示:如果你不需要用到数组本身,只需要计数,直接走COUNT查询性能更好,省略了数组构造的开销:
SELECT COUNT(journeys.id) AS journey_count FROM JOURNEYS JOIN RESPONSES ON scenarios[1] = responses.id WHERE channel_name = 'channel1';
其他数据库适配
- MySQL(返回JSON数组场景):使用
JSON_LENGTH()函数
SELECT JSON_LENGTH( JSON_ARRAY( SELECT journeys.id FROM JOURNEYS JOIN RESPONSES ON scenarios[1] = responses.id WHERE channel_name = 'channel1' ORDER BY journeys.id ) ) AS journey_array_length;
- SQL Server 2022及以上版本:使用
ARRAY_LENGTH()函数
SELECT ARRAY_LENGTH( ( SELECT journeys.id FROM JOURNEYS JOIN RESPONSES ON scenarios[1] = responses.id WHERE channel_name = 'channel1' ORDER BY journeys.id FOR JSON PATH ) ) AS journey_array_length;
内容的提问来源于stack exchange,提问作者Hadas Hamerovv
相关产品推荐
相关产品推荐

