<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=%2FWyra%C5%BCeniaIWarunki</id>
	<title>/WyrażeniaIWarunki - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="http://brain.fuw.edu.pl/edu/index.php?action=history&amp;feed=atom&amp;title=%2FWyra%C5%BCeniaIWarunki"/>
	<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=/Wyra%C5%BCeniaIWarunki&amp;action=history"/>
	<updated>2026-04-24T14:12:05Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://brain.fuw.edu.pl/edu/index.php?title=/Wyra%C5%BCeniaIWarunki&amp;diff=2024&amp;oldid=prev</id>
		<title>Jarekz: Utworzono nową stronę &quot;= TI:WTBD/WyrażeniaIWarunki =  Wyrażenia występują m. in. jako definicje kolumn zbioru wynikowego i w budowie warunków tworzących klauzule WHERE takich instruk...&quot;</title>
		<link rel="alternate" type="text/html" href="http://brain.fuw.edu.pl/edu/index.php?title=/Wyra%C5%BCeniaIWarunki&amp;diff=2024&amp;oldid=prev"/>
		<updated>2015-05-23T14:43:25Z</updated>

		<summary type="html">&lt;p&gt;Utworzono nową stronę &amp;quot;= &lt;a href=&quot;/edu/index.php/TI:WTBD&quot; title=&quot;TI:WTBD&quot;&gt;TI:WTBD&lt;/a&gt;/WyrażeniaIWarunki =  Wyrażenia występują m. in. jako definicje kolumn zbioru wynikowego i w budowie warunków tworzących klauzule WHERE takich instruk...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= [[TI:WTBD]]/WyrażeniaIWarunki =&lt;br /&gt;
&lt;br /&gt;
Wyrażenia występują m. in. jako definicje kolumn zbioru wynikowego i w budowie warunków tworzących klauzule WHERE takich instrukcji, jak DELETE czy UPDATE. Są budowane ze stałych, operatorów, odniesień do kolumn tabel źródłowych, i wywołań funkcji.&lt;br /&gt;
&lt;br /&gt;
== Wyrażenia arytmetyczne ==&lt;br /&gt;
&lt;br /&gt;
Liczby literalne (stałe) dziesiętne, całkowite i zmiennoprzecinkowe, zapisuje się standardowo&lt;br /&gt;
Do dyspozycji są na pewno cztery działania oraz operator reszty z dzielenia (%), zazwyczaj też operatory bitowe ( &amp;gt;&amp;gt;  &amp;lt;&amp;lt; &amp;amp; | ).  Poza tym, repertuar dostępnych funkcji matematycznych zależy od produktu. W SQLite do dyspozycji jest standardowo bardzo niewiele (funkcje ABS, ROUND, MAX(A, B, ..) i MIN(A, B, ..)), dla odmiany w MySQL dostępny jest dość kompletny repertuar funkcji matematycznych.&lt;br /&gt;
&lt;br /&gt;
== Wyrażenia napisowe ==&lt;br /&gt;
&lt;br /&gt;
*Literalne napisy muszą być odgraniczone apostrofami ('Napis'). Apostrof wewnątrz napisu reprezentowany jest przez apostrof podwojony. &lt;br /&gt;
*Operator sklejania (konkatenacji) pisze się || (dwie kreski pionowe).&lt;br /&gt;
*Jest wiele funkcji operujących na napisach, np.:&lt;br /&gt;
**LENGTH(A)&lt;br /&gt;
**LOWER(A)&lt;br /&gt;
**LTRIM(A[, B])&lt;br /&gt;
**REPLACE(A, B, C) -- zastąp każde wystąpienie B w A przez C&lt;br /&gt;
**RTRIM(A[, B])&lt;br /&gt;
**SUBSTR(A, B[, C]) -- część napisu A od pozycji B o długości C; B i C mogą być ujemne, pozycje znaków są liczone od 1&lt;br /&gt;
**TRIM(A[, B])&lt;br /&gt;
**UPPER(A)&lt;br /&gt;
*W konkretnym produkcie takich funkcji może być więcej&lt;br /&gt;
&lt;br /&gt;
== Warunki ==&lt;br /&gt;
&lt;br /&gt;
Warunki występują przede wszystkim w klauzulach WHERE. Tworzone są za pomocą porównań.&lt;br /&gt;
*Operator porównania zapisuje się pojedynczym znakiem równości (=), stosuje się on zarówno do liczb jak i do napisów&lt;br /&gt;
*Operatory nierówności ( &amp;lt; &amp;gt; &amp;lt;= &amp;gt;= != ) również mogą być stosowane do napisów (oprócz oczywistego zastosowania do wartości liczbowych). Reguły porządkowania napisów (i związane z nimi reguły porównywania) mogą być nieoczywiste, gdy napisy wykraczają poza ASCII. &lt;br /&gt;
*Zapis A BETWEEN B AND C jest równoważny (A &amp;gt;= B AND A &amp;lt;= C)&lt;br /&gt;
*Porównanie czegokolwiek z NULL zazwyczaj daje wartość NULL (podobnie jak inne operatory, gdy NULL jest jednym z argumentów). Wyjątkiem są operatory IS oraz IS NOT. Warunek sprawdzający, czy X jest NULL, należy więc pisać: X IS NULL, nie: X=NULL&lt;br /&gt;
*W porównywaniu napisów przydatny jest operator LIKE:&lt;br /&gt;
**A LIKE ''wzorzec''&lt;br /&gt;
*''wzorzec'' konstruuje się z udziałem znaków specjalnych % (dowolny ciąg) i _ (dowolny 1 znak). Wiele produktów bazodanowych umożliwia korzystanie z wyrażen regularnych, np. MySQL: wprowadzając odrębny operator REGEXP (albo RLIKE). W SQLite to standardowo nie działa.&lt;br /&gt;
*Z warunków prostych można budować warunki złożone za pomocą operatorów logicznych: AND, OR, NOT&lt;br /&gt;
*Standard SQL '''nie''' przewiduje wartości logicznych, jak ''True'' i ''False'' w Pythonie. Dlatego nie można np. zdefiniować kolumny tabeli jako zawierającej logiczną flagę -- zamiast tego stosuje się wartości 0 i 1, albo symbole jednoliterowe w rodzaju ''T'' i ''N''. W wielu systemach jednak warunki są ''de facto'' traktowane jak wyrażenia o wartościach numerycznych ''0'' i ''1'', i można np. użyć ich jako elementu wyrażeń arytmetycznych -- i odwrotnie, wyrażeń arytmetycznych jako warunków atomowych (niezerowa wartość odpowiada prawdzie); np. MySQL i SQLite to dopuszczają. Inne produkty jednak podchodzą do tego bardziej rygorystycznie i nie pozwalają na takie mieszanie wyrażeń i warunków (np. Oracle).&lt;br /&gt;
*Logika w SQL jest w istocie trójwartościowa: wartość wyrażenia logicznego może być NULL. Efektywnie jednak warunek o wartości NULL działa jak fałszywy.&lt;br /&gt;
&lt;br /&gt;
== Wyrażenia warunkowe ==&lt;br /&gt;
&lt;br /&gt;
*CASE ''x'' WHEN ''w1'' THEN ''r1'' WHEN ''w2'' THEN ''r2'' ELSE ''r3'' END&lt;br /&gt;
*CASE WHEN ''x''=''w1'' THEN ''r1'' WHEN ''x=w2'' THEN ''r2'' ELSE ''r3'' END&lt;br /&gt;
**Oba wyrażenia powyżej są równoważne, z dokładnością do tego, że pierwsze daje gwarancję tylko jednokrotnej ewaluacji wyrażenia ''x''&lt;br /&gt;
**Oczywiście w drugiej postaci w klauzulach WHEN mogą występować bardziej złożone warunki, a samych klauzul WHEN może być więcej (lub mniej)&lt;br /&gt;
**Klauzula ELSE jest opcjonalna. Jeśli żadna gałąź nie zostanie wybrana, a klauzuli ELSE nie ma, wynikiem jest NULL.&lt;br /&gt;
**Nieco podobny charakter ma funkcja COALESCE(A, B, ..), która zwraca pierwszy w kolejności argument, który nie jest NULL.&lt;/div&gt;</summary>
		<author><name>Jarekz</name></author>
		
	</entry>
</feed>