2017-01-17 10 views
0

лиЯвляется ли MySQL IF равным COALESCE?

IF(CS2_PDM_D_Mini IS NULL,0,CS2_PDM_D_Mini) 

равна

COALESCE(CS2_PDM_D_Mini),0) 

Из-за Postgres не понимает IF, у меня есть много MySQL IF заявления в один SQL запрос, чтобы преобразовать в вещь, что PostgreSQL принимает

+0

'выберите COALESCE (Null, 0) 'this возвращает' 0' и 'select coalesce (2,0)' возвращает '2', поэтому правильным способом является' select coalesce (CS2_PDM_D_Mini, 0) от tbl' –

+0

OK Большое вам спасибо, но делает ли он тот же результат, что и оператор IF, о котором я упоминал? Я думаю, да, но не уверен, что 100%! – user7370387

+0

Если вы хотите вернуть ** только ** '0' (одно условие и проверить для NULL), тогда он будет работать –

ответ

0

Если вы хотите высмеять формат Mysql IF, используйте CASE WHEN THEN END, как здесь:

t=# select case when CS2_PDM_D_Mini is null then 0 else CS2_PDM_D_Mini end ; 

Заканчивать docs для обоих CASE и COALESCE:

Функция COALESCE возвращает первый из его аргументов, не нуль

IF является pl/PgSql statement