SELECT *
FROM corp_action_restriction car1
LEFT OUTER JOIN investment_account inv
ON CASE
WHEN REGEXP_LIKE(REGEXP_SUBSTR(car1.restriction_value,
'[^|] ',
1,
1),
'^[[:digit:]]*$') THEN
TO_NUMBER(REGEXP_SUBSTR(car1.restriction_value, '[^|] ', 1, 1)) =
inv.investment_account_id
ELSE
car1.restriction_value = TO_CHAR(inv.investment_account_id)
END
我正在丟失關鍵字錯誤。
誰能告訴我這個查詢有什么問題?
ORA-00905:缺少關鍵字
00905。00000 - “缺少關鍵字”
*原因:
*操作:
第 4 行錯誤:第 61 列
uj5u.com熱心網友回復:
因為return_exprorelse_expr不能是布爾運算式型別。此外,第三個和第四個引數 ( 1& 1)REGEXP_SUBSTR()是多余的。
確實你不需要CASE..WHEN運算式,如果資料庫版本是12cR2 ,那么考慮使用
SELECT *
FROM corp_action_restriction car1
LEFT JOIN investment_account inv
ON TO_NUMBER(
REGEXP_SUBSTR(
car1.restriction_value,
'[^|] '
)
DEFAULT NULL ON CONVERSION ERROR
) = inv.investment_account_id
這樣,您就不會因轉換而出錯
Demo
uj5u.com熱心網友回復:
那將是
SELECT *
FROM CORP_ACTION_RESTRICTION CAR1
LEFT OUTER JOIN INVESTMENT_ACCOUNT INV
ON INV.INVESTMENT_ACCOUNT_ID =
CASE
WHEN REGEXP_LIKE (REGEXP_SUBSTR (CAR1.RESTRICTION_VALUE,
'[^|] ',
1,
1),
'^[[:digit:]]*$')
THEN
TO_NUMBER (REGEXP_SUBSTR (CAR1.RESTRICTION_VALUE,
'[^|] ',
1,
1))
ELSE
CAR1.RESTRICTION_VALUE
END;
換句話說,把inv.investment_account_id成ON條,然后比較一下(用=)來表達的情況下的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/380046.html
上一篇:使用python更新csv檔案
