ullman142 (2)

ullman142 (2)



290 5. JEŻYK BAZ DANYCH SQL

drugiego tekstu. Podobnie jak to występowało w przypadku testu równości, należy oczekiwać prawidłowego uzupełniania tekstów' znakami pustymi.

W SQL istnieje także możliwość porównywania tekstów pasujących do tego samego wzorca. Wyrażenie:

s LIKE p

jest porównaniem, w którym s jest tekstem, a p pewnym wzorcem, tzn. takim tekstem, w którym mogą wystąpić szablony, czyli w tym przypadku znaki % oraz Inne znaki w napisie * muszą być dokładnie równe znakom z wzorca p, natomiast szablonowi % z p może odpowiadać w s dowolny ciąg znaków, także o długości 0; z kolei znakowi _ z wzorca p odpowiada jeden dowolny znak w tekście s. Wartość tego porównania wynosi prawda wówczas, gdy pasuje do wzorcap. Analogicznie jest zdefiniowane wyrażenie s NOT like pktórego wartością jest prawda wówczas, gdy tekst s nie pasuje do wzorca p.

Znak wyjątku w wyrażeniu LIKE

Co zrobić, gdy ciąg znaków, które występują w słow ie porównywanym ze wzorcem, zawiera znak % lub znak _? Na przykład w systemie UNIX w tym celu korzysta się ze specjalnego znaku wyjątku, którym tam jest znak \. Natomiast w języku SQL można dowolnego znaku użyć jako znaku wyjątku. Definiuje się go za pomocą słowa kluczowego ESCAPE, po którym umieszcza się ten wybrany znak otoczony apostrofami. Wówczas, jeśli we wzorcu znak % lub _ zostanie poprzedzony tym wybranym znakiem wyjątku, to będzie on traktowany dosłownie jako znak % lub a niejako szablon. Na przykład sformułowanie

s LIK2 'x%%x%' ESCAPE 'x'

definiuje * jako znak wyjątku we wzorcu 'x%%x$'. Wobec tego ciąg x% powoduje, że znak % w tym miejscu wzorca nie jest szablonem, ale po prostu znakiem %. Z tym wzorcem są zgodne wszystkie teksty, które zaczynają się od znaku % i kończą na znaku %.


PRZYKŁAD 5.7

Pamiętamy film, którego początek tytułu był „Gwiezdn..” i jakieś jeszcze słowro mające 5 liter. Co to był za film? Możemy go odszukać, formułując następujące zapytanie:

SELECT tytuł EROM Film

WHERE tytuł LIKE 'Gwiezdn

Jego wynikiem mają być te wszystkie tytuły filmów z relacji Film, które są złożone z czternastu znaków, gdzie pierwszych osiem stanowi słowo Gwiezdne albo gwiezdny, albo też Gwiezdna, a ostatnich siedem znaków jest dowolnych, ponieważ dowolnych siedem znaków pasuje do wzorca złożonego z siedmiu symboli W wyniku zapytania zostają wypisane wszystkie tytuły filmów, które pasują do wzorca, np. Gwiezdne Wojny, albo Gwiezdna Droga.

PRZYKŁAD 5.8

Wyszukajmy teraz te angielskojęzyczne tytuły filmów, w których występuje apostrof Zapytanie przybiera wówczas następującą postać:

SELECT tytuł EROM Film WHERE tytuł LIKE

apostrofy w SQL służą do nawiasowania stałych tekstowych, a więc nie mogą jednocześnie oznaczać znaku apostrof w sensie dosłownym. Dlatego przyjęto konwencję, w której występujący w tekście ciąg dwóch bezpośrednio po sobie następujących apostrofów oznacza znak apostrofu, a nie nawias stałej tekstowej. Dlatego do zawartego we wzorcu ciągu znaków' 's pasują te tytuły, w których występuje ciąg znaków 's.

Po obu stronach ’s występują znaki %, do których pasują dowolne teksty. A zatem do tego wzorca pasuje każdy tytuł filmu, w którym występuje podciąg ’s, w związku z czym w wyniku tego zapytania zostaną wypisane takie angielskie tytuły jak Logan ’s Run lub Alice ’s Restaurant.

5.1.4. Porównywanie daty i czasu

W zasadzie w SQL data i czas są reprezentowane jako specjalne typy danych. Często można także dobrać właściwy dla tworzonego programu styl zapisu jak na przykład 14-05 194 8 lub '.4 maja 1948. W naszej książce opiszemy tylko dość specyficzną pod względem formatu daty i czasu notację ze standardu SQL2.

Dalii określa się, podając słowno kluczowe DATĘ, po którym występuje napis ujęty wr apostrofy’. Napis musi być podany w stosownej postaci. Na przykład DATĘ '1948 05-14' jest poprawną postacią napisu. Pierwsze cztery znaki napisu określają rok. Potem występuje myślnik oraz dwie cyfry, które określają numer miesiąca w roku. Zauważmy, że jeśli numer miesiąca jest jednocyfrowy, to cyfra dziesiątek jest oznaczona zerem. Po kolejnym myślniku występują dwie cyfry, które oznaczają numer dnia w miesiącu. Po-


Wyszukiwarka

Podobne podstrony:
ullman158 (2) 322 5. JĘZYK BAZ DANYCH SQL To nowe zapytanie zostało przedstawione na rys. 5.11. Powo
ullman161 (2) dZ5 5. JĘZYK BAZ DANYCH SQL jednocześnie zostanie usunięte kilka krotek, które spełnia
53669 ullman151 (2) 308 5. JEŻYK BAZ DANYCH SQL T5.3.2. Warunki obejmujące relacje W języku SQL
70987 ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrz
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania
ullman154 (2) .5 l*ł 5. JĘZYK BAZ DANYCH SQL MĆwiczenie 5.3.6. Można już było uprzednio dostrzec, że
ullman138 (2) 5_Język baz danych SQL Język SQL stanowi najbardziej popularny mechanizm definiowania
ullman146 (2) 5. JĘZYK BAZ DANYCH SQL zmienną krotkową i kropką. A więc zmienna krotkowa jest inną n
ullman176 (2) 5. jęZYK. BAZ DANYCH SQL Złączenie naturalne w języku $QL2 ma dokładnie takie same wła
ullman140 (2) 286 $. jąZYK BAZ DANYCH SQL PRZYKŁAD 5.3 Poniższy przykład dotyczy lego samego zapytan
ullman141 (2) 288 5 JĘZYK BAZ DANYCH SQI. W przykładzie 5.1 występuje porównanie: nazwaStudia = Dis

więcej podobnych podstron