jol.us_
24.11.2015, 12:26:36
Witam,
W bazie danych mam kolumny: A, B, C. Kolumna C zawsze ma ustawiona wartosc, kolumny A i B są opcjonalne.
Teraz wartość zwracaną z kolumny C uzależniam od tego czy kolumna A i B maja ustawiona wartosc. Jezeli A i B sa puste to zwracam "-" a jesli obydwie maja wartosc to zwaracam wartosc kolumny C.
Pseudokod:
if (( A != '') AND (B != '')) THEN C = C ELSE C = '-';
Nie mogę nic wygooglowac, może źle szukam.
Ciąglę gdzies trafiam na COALESCE, ale to nie zupelnie nie to o co mi chodzi.
trueblue
24.11.2015, 12:34:24
IF (( A != '') AND (B != ''),C, '-') AS C
Mi się udało wygooglować:
http://dev.mysql.com/doc/refman/5.7/en/con...tml#function_ifJeszcze jest kwestia co uważasz za puste. Jesli NULL lub pusty string, to wtedy trzeba zastosować właśnie COALESCE.
jol.us_
24.11.2015, 12:40:29
Przez puste uwazam pusty string.
COALESCE jesli dobrze zrozumialem to dziala tak ze zwraca pierwsza wartosc ktora nie jest NULL.
Czyli np. COALESCE( '', 'string1', 'string2') zwroci mi string1, co zdecydowanie nie realizuje tego co chce.
Tak na IF:
IF(A<>'' AND B<>'', C, '-') as C
Bedzie ok?
trueblue
24.11.2015, 12:44:00
W przykładzie, który podałeś zwróci ''.
Jeśli nie interesują Cię wartości nullowe dla A i B, to rozwiązanie masz wyżej.
jol.us_
24.11.2015, 12:46:14
Tak masz racje zwroci ''.... MIalem zamiast '' wpisac NULL, wtedy by zwrocil string1
IF zadziałał. Dziękuję, nie wiem jak tego mogłem nie widzieć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.