Funkcje warunkowe

Dostępny

1.1 Lista funkcji warunkowych

Język SQL ma listę funkcji, które są nieco podobne do operatora if-elsew switchJavie.

W sumie są 4 takie funkcje:

Funkcje Opis
1 SPRAWA przełącznik analogowy
2 JEŚLI() Analogia operatora trójskładnikowego lub if-else
3 JEŻELI NULL() odpowiednik if-else
4 NULLIF() odpowiednik if-else

Ostatnie trzy w SQL są reprezentowane jako funkcje i CASEsą pełnoprawnymi operatorami, więc rozważymy je osobno na samym końcu.

1.2 Funkcja JEŻELI().

Funkcja IF()w języku SQL jest nieco podobna do operatora trójskładnikowego w Javie. W języku SQL przyjmuje 3 parametry i wygląda tak:

IF (condition, true, false)

Do funkcji należy przekazać trzy wyrażenia IF:

  • warunek, który jest sprawdzany pod kątem prawdziwości;
  • wyrażenie zwracane, gdy warunek jest prawdziwy;
  • wyrażenie zwracane, gdy warunek jest fałszywy.

Poniżej podam kilka przykładów, aby łatwiej było zrozumieć, jak to działa:

Wniosek Wynik
1 WYBIERZ JEŚLI( 1>2 , 2, 3) 3
2 WYBIERZ JEŻELI( 1<2 , 'tak', 'nie') 'Tak'
3 WYBIERZ JEŻELI( STRCMP('test','test1' ), 'nie', 'tak') 'NIE'

1.3 Funkcja JEŻELI NULL() i NULLIF()

Istnieją również dwie modyfikacje funkcji IF().

Pierwszą modyfikacją jest funkcja IFNULL(). Przyjmuje tylko dwie wartości:

IFNULL (expression 1, expression 2)

Jeśli wyrażenie1 nie jest równe NULL, funkcja zwróci wyrażenie1 . Jeśli wyrażenie1 IS NULL, to funkcja zwróci wyrażenie2 . Istotą jest zastąpienie wartości domyślnej, gdy pole jest równe NULL.

Drugą modyfikacją funkcji IFjest funkcja NULLIF(), która również przyjmuje dwie wartości:

NULLIF (expression 1, expression 2)

Działa to w przeciwnym kierunku:

  • jeśli wyrażenie1 jest równe wyrażeniu2 , funkcja zwraca NULL;
  • jeśli wyrażenia nie są równe, zwracane jest wyrażenie1 .
Komentarze (1)
  • Popularne
  • Najnowsze
  • Najstarsze
Musisz się zalogować, aby dodać komentarz
l.jargielo
Poziom 18 , Poland, Poland
21 sierpnia, 11:17
Probable error in second table: it should be SELECT IF( STRCMP('test','test1' ) = 0, 'no', 'yes') instead of SELECT IF( STRCMP('test','test1' ), 'no', 'yes'). STRCMP() returns 1, 0, -1 or NULL and the result should be compared with 0 if we want to checked two strings are the same.