#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