FAILED: SemanticException [Error 10016]: Line 66:45 Argument type mismatch 'ca_coupon_id': "map" or "list" is expected at function SIZE, but "string" is found
问题语句:
if(ca_coupon_id is null, 0, size(ca_coupon_id)) as m_coupon_available_num
补充知识点:MySQL下的 if(a,b,c)的含义是:如果第一个表达式的值为TRUE(不为0或null),则返回第二个参数的值,否则返回第三个参数的值。
问题原因:size()函数中的数据类型应为map或list,而ca_coupon_id是String类型的,后面还有相同的问题
解决:
- 方法1:由于查询代码多次用到size还有摘取第一个元素[0],所以此处我们重新定义数据类型(ca_coupon_id array < string >),重建表。
- 方法2:直接修改获取长度的方法,将size(ca_coupon_id)改为length(ca_coupon_id),注意不是len(),通常是可以通过len获取字符串长度的,但我这里不可行,不知为何。