Witam,
Mam kilka ciekawych zapytań, poniżej tylko wycinki z nich. Na razie nie potrafię sobie tego wyjaśnić.
- Zapytanie:
COALESCE (cast(cast ((q1.CENA/dmp.CENA-1)*100 as decimal(10,2)) as varchar(8)) + '%', '-')
Jeżeli (q1.CENA/dmp.CENA-1) jest NULLem bo q1.CENA jest NULL lub dmp.CENA jest równa 0 (dzielenie przez zero).
To jeżeli wykonam te zapytanie, a jestem połączony poprzez MSSQL Management Studio to zwraca poprawnie '-'.
Natomiast jak wykonuje te zapytanie przez PHP to zwraca mi %. Tak jakby nie traktował tego jako NULL.
2
Dla q3.ZMIENIAJACY = NULL
Zapytanie:
COALESCE(q3.ZMIENIAJACY,'-')
też zwraca NULL
Zapytanie:
COALESCE(cast(q3.ZMIENIAJACY as varchar(25)),'-')
zwraca poprawnie '-'.
Dla q1.DATA_UTWORZENIA = NULL
Zapytanie:
COALESCE (q1.DATA_UTWORZENIA, '-') as DATA_UTWORZENIA_POPRZ
też zwraca NULL
... a chyba powinno zwrócić '-'?
dmp w powyższych zapytaniach to prefix tabeli w tym samym SELECT-ie.
q1, q3 to wyniki z podzapytań w uproszczeniu:
SELECT value, q1.value2 from DOK_MAG_POZ dmp left join (SELECT ...) q1 on q1.ID=dmp.ID
Macie pomysły dlaczego tak się dzieje?