# Operatory wyrażeń

Użyj operatorów do obliczania wartości, porównywania danych wejściowych i łączenia warunków, gdy [Tworzenie wyrażeń](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm).

Do wyrażeń zadań ruchu ma zastosowanie następująca semantyka. Wyrażenia wykonywane na platformie danych w chmurze używają semantyki tej platformy. Umieść spacje wokół operatorów i ujmij w cudzysłów stałe tekstowe oraz stałe daty, takie jak `$HIRE_DATE < '2026-10-08'`.

## Operatory arytmetyczne

Operacje arytmetyczne na wartościach liczbowych

| Operator | Znaczenie | Przykład i wynik |
| --- | --- | --- |
| `+` | Dodaje dwa operandy. | `2 + 3` zwraca `5`. |
| `-` | Odejmuje prawy operand od lewego. Znak minus na początku neguje wartość. | `5 - 2` zwraca `3`. |
| `*` | Mnoży operandy. | `3 * 4` zwraca `12`. |
| `/` | Dzieli lewy operand przez prawy. Dzielenie całkowite obcina wynik w kierunku zera. Operand rzeczywisty zachowuje wynik ułamkowy. Dzielenie przez zero zwraca NULL. | `7 / 2` zwraca `3`; `7.0 / 2` zwraca `3.5`. |
| `%` | Konwertuje oba operandy na liczby całkowite i zwraca resztę z dzielenia. To nie jest obliczenie procentowe. | `7 % 3` zwraca `1`. |

## Operatory porównania

Porównania zwracają 1 dla prawdy i 0 dla fałszu. Zwykłe porównania z wartością NULL zwracają NULL; użyj `IS` lub `IS NOT`, aby sprawdzić brakujące wartości.

Porównywanie dwóch wartości

| Operator | Znaczenie | Przykład i wynik |
| --- | --- | --- |
| `=` | Sprawdza równość. | `3 = 3` zwraca `1`. |
| `!=` | Sprawdza nierówność. | `3 != 4` zwraca `1`. |
| `<>` | Alternatywny operator nierówności. | `3 <> 3` zwraca `0`. |
| `<` | Sprawdza, czy lewa wartość jest mniejsza. | `2 < 3` zwraca `1`. |
| `<=` | Sprawdza, czy jest mniejsze lub równe. | `3 <= 3` zwraca `1`. |
| `>` | Sprawdza, czy lewa wartość jest większa. | `4 > 3` zwraca `1`. |
| `>=` | Sprawdza, czy jest większe lub równe. | `3 >= 3` zwraca `1`. |
| `IS` | Sprawdza równość bez zwracania wartości NULL. Dwie wartości NULL są równe; wartość NULL i wartość inna niż NULL nie są. | `NULL IS NULL` zwraca `1`. |
| `IS NOT` | Sprawdza nierówność bez zwracania wartości NULL. | `NULL IS NOT 3` zwraca `1`. |

## Operatory logiczne i warunkowe

Łączenie warunków i wybieranie wartości

| Operator | Znaczenie | Przykład i wynik |
| --- | --- | --- |
| `AND` | Prawda, gdy oba warunki są prawdziwe. Operand o wartości false powoduje, że wynik ma wartość false, nawet jeśli drugi operand ma wartość NULL. | `(3 > 2) AND (4 < 3)` zwraca `0`. |
| `OR` | Prawda, gdy którykolwiek z warunków jest prawdziwy. Operand o wartości true powoduje, że wynik ma wartość true, nawet jeśli drugi operand to NULL. | `(3 > 2) OR (4 < 3)` zwraca `1`. |
| `IN` | Sprawdza przynależność do listy w nawiasach. Jeśli żadna wartość nie pasuje, a lista zawiera NULL, zwraca NULL. Pusta lista zwraca 0, w tym dla lewego operandu o wartości NULL. | `2 IN (1, 2, 3)` zwraca `1`; `4 IN (1, NULL)` zwraca NULL. |
| `CASE` | Zwraca pierwszą pasującą gałąź. W przypadku wartości bazowej porównuje ją z każdą wartością WHEN. Bez niego sprawdza każdy warunek WHEN. Używa ELSE, jeśli żadna gałąź nie pasuje, lub NULL, jeśli brakuje ELSE. | `CASE WHEN 5 > 3 THEN 'High' ELSE 'Low' END` zwraca `'High'`. `CASE 2 WHEN 1 THEN 'One' WHEN 2 THEN 'Two' END` zwraca `'Two'`. |

## Operatory ciągów znaków i wzorców

Łączenie tekstu i dopasowywanie wzorców

| Operator | Znaczenie | Przykład i wynik |
| --- | --- | --- |
| `\|\|` | Łączy wartości tekstowe. Operand NULL daje w wyniku NULL. | `'John' \|\| ' ' \|\| 'Smith'` zwraca `'John Smith'`. |
| `LIKE` | Porównuje ciąg znaków po lewej stronie ze wzorcem po prawej stronie. `%` dopasowuje zero lub więcej znaków; `_` dopasowuje jeden. Domyślnie ignoruje wielkość liter ASCII, ale nie różnice w wielkości liter spoza ASCII. ESCAPE określa pojedynczy znak służący do dosłownego traktowania symboli wieloznacznych. | `'Alice' LIKE 'A%'` zwraca `1`. `'10%' LIKE '10!%' ESCAPE '!'` zwraca `1`. |
| `GLOB` | Dopasowywanie z uwzględnieniem wielkości liter przy użyciu wzorców w stylu uniksowym. `*` dopasowuje zero lub więcej znaków, `?` dopasowuje jeden, a nawiasy definiują zestaw znaków. | `'file.csv' GLOB '*.csv'` zwraca `1`; `'File.CSV' GLOB '*.csv'` zwraca `0`. |
| `MATCH` | Deleguje do zdefiniowanej przez aplikację funkcji `match()`. Wymagana jest działająca implementacja; domyślna implementacja SQLite zgłasza błąd. | `'Quarterly sales' MATCH 'sales'` przedstawia składnię. Wynik zależy od implementacji aplikacji. |
| `REGEXP` | Deleguje do zdefiniowanej przez aplikację funkcji `regexp()`. SQLite domyślnie nie udostępnia tej funkcji. | `'ABC123' REGEXP '^[A-Z]+[0-9]+$'` przedstawia składnię. Bez implementacji ewaluacja kończy się niepowodzeniem. |

## Operatory bitowe

Te operatory binarne działają na bitach liczb całkowitych, a nie na warunkach logicznych. `|` oznacza bitowe OR, nawet jeśli edytor wymienia je również w kategorii logicznej.

Operacje bitowe na liczbach całkowitych

| Operator | Znaczenie | Przykład i wynik |
| --- | --- | --- |
| `<<` | Przesuwa lewą liczbę całkowitą w lewo o liczbę bitów w prawym operandzie. | `3 << 1` zwraca `6`. |
| `>>` | Przesuwa lewą liczbę całkowitą w prawo o liczbę bitów w prawym operandzie. | `8 >> 1` zwraca `4`. |
| `&` | Bitowe AND: ustawia bit wyniku tylko wtedy, gdy oba operandy mają ten bit ustawiony. | `6 & 3` zwraca `2`. |
| `\|` | Bitowe OR: ustawia bit wyniku, jeśli którykolwiek z operandów ma ustawiony ten bit. | `6 \| 3` zwraca `7`. |

## Kolejność obliczania i brakujące wartości

Dla powyższych operatorów dwuargumentowych pierwszeństwo od najwyższego do najniższego to: konkatenacja; mnożenie, dzielenie i reszta; dodawanie i odejmowanie; operacje bitowe; porównania porządkowe; testy równości i dopasowania do wzorca; AND; a następnie OR. Operatory na tym samym poziomie są obliczane od lewej do prawej. Nawiasy zmieniają tę kolejność: `(2 + 3) * 4` zwraca `20`, podczas gdy `2 + 3 * 4` zwraca `14`.

Większość operatorów zwraca wartość NULL, gdy operand ma wartość NULL. Opisane powyżej wyjątki obejmują `IS`, `IS NOT` oraz konkretne przypadki `AND`, `OR` i `IN`. Użyj `$COALESCE`, gdy brakująca wartość powinna mieć wartość zastępczą. Zobacz [Funkcje wyrażeń](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Expression-functions.htm).