CREATE TABLE TEST_CASE_WHEN(YEAR INT,PERIOD VARCHAR,EMP_NAME VARCHAR);
INSERT INTO TEST_CASE_WHEN VALUES(2024,'12','Lucy');
INSERT INTO TEST_CASE_WHEN VALUES(2024,'12C','Bob');
INSERT INTO TEST_CASE_WHEN VALUES(2024,'01A','Candy');
COMMIT;
SELECT
case when period in ('01',
'02',
'03',
'04',
'05',
'06',
'07',
'08',
'09',
'10',
'11',
'12')
then to_date(T.YEAR||T.PERIOD,'yyyymm')
else T.YEAR||T.PERIOD END as BUSINESS_DT FROM TEST_CASE_WHEN t ;
在使用 CASE WHEN
语句时,如果存在一些不规范的数据,会导致在 CASE
语句的分支中有一些无效的或不支持的操作,即使这些分支在实际运行时不该被执行。这是因为SQL
引擎可能会尝试预计算所有可能的结果,导致某些表达式在某些情况下会引发错误。
通过加HINT /*+ CASE_WHEN_CVT_IFUN(8) */
可以有效地避免CASE WHEN
语句中的预计算错误。
文章
阅读量
获赞