gk1982
2018-01-22 23:18

Rozwiązywałem sobie zadanie z SQLa w serwisie https://www.hackerrank.com

"Napisz zapytanie o listę nazw CITY z tabeli STATION, które nie kończą się na samogłoskach."

Napisałem:

SELECT DISTINCT CITY FROM STATION WHERE NOT (CITY LIKE '%a' OR CITY LIKE  '%e' OR CITY LIKE '%i' OR CITY LIKE '%o' OR CITY LIKE '%u' OR CITY LIKE '%y');

Kod nie przeszedł testu, po kilku próbach, zmianach zapytania i stracie połowy godziny lekcyjnej zdesperowany wpisałem w google ‘vowels’ i w końcu mnie olśniło.
Odnalazłem błąd w moim zapytaniu SQLa, w języku angielskim ‘y’ może być zarówno samogłoską, jak i spółgłoską. Wykasowałem ORa z ‘y’ i poszedł test.

Mam nadzieje, że komuś się przyda przykład z moim śmiesznym błędem :)

Panczo

Nie wiedziałem że y nie jest samogłoską... Aby dodać coś na temat samego SQL którego napisałeś to jak już używasz operatora like, to wyduś z niego wszystko, w tsql city like '%[^aeiou]'

choracy69

Możesz coś takiego zastosować: WHERE NOT( REGEXP_LIKE (COLUMN_NAME, '^(A|O|U|I|E)'));