2015-12-07 3 views
0

Я пытаюсь написать MSSQL эквивалент этого запроса:PostgreSQL MSSQL к массиву

(CASE WHEN (to_number((column1), '9') = ANY (ARRAY[(1)::numeric, (5)::numeric])) THEN 'Discontinued' WHEN (to_number((column1), '9') = ANY (ARRAY[(0)::numeric, (3)::numeric, (7)::numeric])) THEN 'Covered' ELSE 'Not Covered' END AS coverage_status,) 

ответ

3

Использование массива в Postgres был слишком сложным, чтобы начать с (чтобы не сказать бесполезно). Это должно работать:

CASE 
    WHEN cast(column1 as integer) in (1,5) THEN 'Discontinued' 
    WHEN cast(column1 as integer) in (0,3,7) THEN 'Covered' 
    ELSE 'Not Covered' 
END AS coverage_status 
+0

biginit whas the trick. Спасибо! –

+0

, можете ли вы объяснить, как это работает? to_number ((column1) :: text, «9» :: текст и текст столбца 63739029910, поэтому ответ равен 1. 9 приводит к значению с тем же числом цифр, что и 9 секунд. Если цифра недоступна, выводит пробел. Существует 3 девятки. –

Смежные вопросы