一尘不染

SQL:大小写限制(WHEN,THEN条件的数量)

sql

考虑一下查询(它同时在Oracle和MySQL上运行)

UPDATE table1
SET something_id = CASE 
  WHEN table1_id = 1446 THEN 423 
  WHEN table1_id = 2372 THEN 426 
  WHEN table1_id = 2402 THEN 428 
  WHEN table1_id = 2637 THEN 429 
  WHEN table1_id = 2859 THEN 430 
  WHEN table1_id = 3659 THEN 433 
END 
WHERE table1_id IN (1446,2372,2402,2637,2859,3659)

该查询可能会变得很大,所以我想知道单个查询可以容纳的条件数(WHEN,THEN语句)的限制是多少。有办法解决吗?

例如:
我知道可以传递的最大值IN是1000,为了克服这个问题,我们可以做

`WHERE TABLE1_ID IN ([1000 values]) OR TABLE1_ID IN ([more values])`

阅读 189

收藏
2021-05-23

共1个答案

一尘不染

10gR2的文档说:

CASE表达式中的最大参数数为255。所有表达式都计入此限制,包括简单CASE表达式的初始表达式和可选的ELSE表达式。每个WHEN …
THEN对均视为两个参数。为避免超出此限制,可以嵌套CASE表达式,以便return_expr本身是CASE表达式。

2021-05-23