我遇到了一个问题:如果case语句中有超过15个LIKE
运算符,则会出现错误java.lang.StackOverflowError
。
以下是我对具有6000万行的表执行的示例:
SELECT
CASE WHEN field LIKE '%value%' THEN 'result'
WHEN field LIKE '%value2%' THEN 'result2'
.... 14 more of those
END
我没有在任何地方看到此限制的记录。有什么想法可以解决这个问题吗?
答案 0 :(得分:1)
这听起来像是内存不足错误。
我认为您有一些选择:
like
处理之前使用中间表(或使用中间表处理初始数据的子集)explain
的输出,看看是否能为您提供出问题的线索答案 1 :(得分:1)
答案 2 :(得分:1)
原来是驱动程序问题。我最初使用的是1.2.16.1027,后来又升级到了1.2.20.1043,并且不再收到错误。