Как автоматически конвертировать $10 тыс. в 10000 в SQL-запросе

#sql #oracle #plsql

Вопрос:

Как скрыть от 10 тыс. до 10000 в SQL-запросе

Комментарии:

1. Что вы пробовали до сих пор и что было не так с вашим кодом

Ответ №1:

Использовать ЗАМЕНИТЬ

 SELECT  REPLACE('$10k', 'k', '000')
 

ВОЗВРАТ

 REPLACE('$10k', 'k', '000')
'$10000'
 

Ответ №2:

Попробуйте это — это довольно надежно:

 WITH                                                                                                                                                        
indata(amount) AS (
            SELECT '10000' FROM dual
  UNION ALL SELECT '10k'   FROM dual
  UNION ALL SELECT '200'   FROM dual
)
SELECT 
  CASE 
    WHEN LOWER(amount) LIKE '%k'
    THEN CAST(RTRIM(LOWER(amount),'k') AS NUMBER(9,0)) * 1000
    ELSE CAST(AMOUNT AS NUMBER(9,0))
  END AS numeric_amount
FROM indata
-- out  numeric_amount 
-- out ----------------
-- out           10000
-- out           10000
-- out             200