BD-1st-2.4-lab1.tresc-1.1-Slajd31
Selekcja – operatory logiczne – cd.
Operator LIKE jest specjalnym operatorem stosowanym do złożonego porównywania łańcuchów. Składnia operatora LIKE to:
x LIKE maska,
gdzie x jest dowolnym wyrażeniem typu łańcuchowego, a maska jest specjalnym łańcuchem zawierającym normalne znaki oraz znaki o specjalnym znaczeniu. Znaki specjalne to: ‘%’ i ‘_’, gdzie ‘%’ oznacza dowolny ciąg znaków (zero lub więcej) a ‘_’ dokładnie jeden, dowolny, znak. Operator LIKE sprawdza, czy zadany łańcuch spełnia warunki zdefiniowane przez maskę. Rozważmy przykładowe zapytanie przedstawione na slajdzie. Klauzula WHERE w tym zapytaniu zawiera warunek: „nazwisko LIKE 'M%‘”. W warunku tym maska ma postać ‘M%’. Reprezentuje ona wszystkie łańcuchy, które jako pierwszy znak mają literę M, po której może się znajdować dowolny ciąg znaków. Warunek ten będzie zatem spełniony, jeśli łańcuch zapisany w atrybucie NAZWISKO będzie się zaczynał od litery ‘M’. Poniżej przedstawiono kilka innych przykładów maski:
‘%SKI’ – wszystkie łańcuchy kończące się na SKI (np.. ‘KOTARSKI’).
‘MALINOWSK_’ – wszystkie łańcuchy zaczynające się od MALINOWSK i mające dowolny jeden znak na końcu (np.. ‘MALINOWSKI’, ‘MALINOWSKA’).
Operator IS NULL sprawdza, czy wartość danego wyrażenia jest równa NULL. W przykładowym zapytaniu sprawdza on, czy wartość atrybutu PLACA_DOD wynosi NULL. Należy w tym miejscu zwrócić szczególną uwagę na to, iż sprawdzanie, czy dany atrybut ma wartość NULL za pomocą operatora ‘=‘ nie ma sensu. Wynika to z faktu, że NULL stanowi wartość nieznaną. Wynik porównania wartości nieznanej z jakąś inną wartością jest również nieznany. Różnica w semantyce pomiędzy dwoma przykładowymi warunkami: placa_dod=NULL i placa_dod IS NULL jest zatem znaczna. Pierwsze wyrażenie można przetłumaczyć następująco: czy placa_dod jest równa wartości nieznanej? Drugie wyrażenie można przetłumaczyć: czy placa_dod jest wartością nieznaną? Na pierwsze pytanie nie można odpowiedzieć, na drugie można. Jeżeli zostanie użyty operator ‘=‘ zamiast IS NULL, SZBD nie będzie mógł stwierdzić czy warunek jest prawdziwy i w rezultacie żadne krotki nie zostaną zwrócone.