[英]Convert result of CASE Expression to a number in Oracle SQL
我有以下select
查詢。 我想將它從string
轉換為number
。 如果我在 case 表達式周圍包裹一個TO_NUMBER
,我會得到
表達式必須與相應的表達式具有相同的數據類型
錯誤。
SELECT CASE SUBSTR(GRADE, INSTR(GRADE, ' ') + 1)
WHEN 'Unspecified' THEN ' '
ELSE SUBSTR(GRADE, INSTR(GRADE, ' ') + 1)
END as Final_Grade,
我怎樣才能讓Final_Grade
成為numeric
?
謝謝!
嗯, ' '
不是數字,所以最好弄清楚該怎么做。 我建議NULL
:
SELECT (CASE SUBSTR(GRADE, INSTR(GRADE, ' ') + 1)
WHEN 'Unspecified' THEN NULL
ELSE TO_NUMBER(SUBSTR(GRADE, INSTR(GRADE, ' ') + 1))
END) as Final_Grade,
其實我更喜歡:
(CASE WHEN GRADE NOT LIKE 'Unspecified%'
THEN TO_NUMBER(SUBSTR(GRADE, INSTR(GRADE, ' ') + 1))
END) as Final_Grade
或者也許更安全:
(CASE WHEN REGEXP_LIKE(GRADE, '^[0-9]+ ')
THEN TO_NUMBER(SUBSTR(GRADE, INSTR(GRADE, ' ') + 1))
END) as Final_Grade
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.