Рассмотрим следующий код:
INSERT INTO EXCHANGE_MAIN3
SELECT
CASE Type
WHEN 'BUY' then
CASE SUBSTR(MARKET,1,4)
WHEN ('NANO') THEN
SUBSTR(MARKET,1,4)
WHEN ('DATA') THEN
SUBSTR(MARKET,1,4)
ELSE
SUBSTR(MARKET,1,3)
END
WHEN 'SELL' then
CASE SUBSTR(MARKET,LENGTH(MARKET)-4,LENGTH(MARKET))
WHEN ('NANO') then
SUBSTR(MARKET,LENGTH(MARKET)-3,LENGTH(MARKET))
WHEN ('DATA') then
SUBSTR(MARKET,LENGTH(MARKET)-3,LENGTH(MARKET))
ELSE
SUBSTR(MARKET,LENGTH(MARKET)-2,LENGTH(MARKET))
END
END
AS COIN_BOUGHT,
CASE Type
WHEN 'BUY' then
CASE SUBSTR(MARKET,LENGTH(MARKET)-4,LENGTH(MARKET))
WHEN ('NANO') then
SUBSTR(MARKET,LENGTH(MARKET)-3,LENGTH(MARKET))
WHEN ('DATA') then
SUBSTR(MARKET,LENGTH(MARKET)-3,LENGTH(MARKET))
ELSE
SUBSTR(MARKET,LENGTH(MARKET)-2,LENGTH(MARKET))
END
WHEN 'SELL' then
CASE SUBSTR(MARKET,1,4)
WHEN ('NANO') THEN
SUBSTR(MARKET,1,4)
WHEN ('DATA') THEN
SUBSTR(MARKET,1,4)
ELSE
SUBSTR(MARKET,1,3)
END
END
AS PAYMETHOD,
...
FROM EXCHANGE_RAW_BINANCE;
Там много повторяющихся частей.
SUBSTR(MARKET,1,4)
повторяется много.
SUBSTR(MARKET,1,3)
повторяется много.
LENGTH(MARKET)-4
повторяется много.
Блок
CASE SUBSTR(MARKET,1,4)
WHEN ('NANO') THEN
SUBSTR(MARKET,1,4)
WHEN ('DATA') THEN
SUBSTR(MARKET,1,4)
ELSE
SUBSTR(MARKET,1,3)
END
повторяется дважды
Блок
WHEN 'SELL' then
CASE SUBSTR(MARKET,LENGTH(MARKET)-4,LENGTH(MARKET))
WHEN ('NANO') then
SUBSTR(MARKET,LENGTH(MARKET)-3,LENGTH(MARKET))
WHEN ('DATA') then
SUBSTR(MARKET,LENGTH(MARKET)-3,LENGTH(MARKET))
ELSE
SUBSTR(MARKET,LENGTH(MARKET)-2,LENGTH(MARKET))
END
повторяется дважды. Есть ли способ не повторять эти куски кода? Любой совет приветствуется. спасибо.