У меня есть следующий запрос, извлеченный из вида netezza, так как нет записи о сохраненном исходном запросе. Как понять, что делает этот запрос?Как понять измененный запрос netezza?
CASE WHEN (O.E_SRC ~~LIKE_ESCAPE('FIX.%.OrderNew'::"VARCHAR", '\'::"VARCHAR"))
THEN ADMIN."REPLACE"(ADMIN."REPLACE"(O.E_SRC, '.OrderNew'::"VARCHAR", ''::"VARCHAR"),
'FIX.'::"VARCHAR", ''::"VARCHAR")
ELSE O.E_SRC
END AS CONNECTION_ID
То, что я понял, там соответствующий шаблон на «FIX.%. OrderNew» и это какой-то заменить? Итак, каков будет исходный запрос? Как NVL(RNO,0)
сохраняется как
CASE WHEN (RNO NOTNULL) THEN RNO WHEN (0 NOTNULL) THEN 0 ELSE NULL::INT4 END
Так что первоначальный эквивалентный запрос к nvl()
или какой-либо другой функции следующего Netezza измененный запрос
CASE WHEN (O.E_SRC ~~LIKE_ESCAPE('FIX.%.OrderNew'::"VARCHAR", '\'::"VARCHAR"))
THEN ADMIN."REPLACE"(ADMIN."REPLACE"(O.E_SRC, '.OrderNew'::"VARCHAR", ''::"VARCHAR"),
'FIX.'::"VARCHAR", ''::"VARCHAR")
ELSE O.E_SRC
END AS CONNECTION_ID
Вы гениальный человек .. Большое спасибо !!! Это исходит из опыта или есть какой-то конкретный способ понять это? –
В основном просто опыт. Следует иметь в виду, что все, что хранится в определении представления, должно соответствовать эквиваленту того, что использовалось в инструкции CREATE VIEW. По большей части это означает косметические изменения (например, :: литье выражений), но может быть больше (например, изменение более простого LIKE для более сложного, но все же эквивалентного LIKE_ESCAPE. Рад, что я мог бы помочь! – ScottMcG