Zapytanie SQL

0

Mam pytanie odnośnie SQLa. Otóż chciałabym wybrać z bazy jednie te wiersze w których wartość w kolumnie nazwisko kończy się na "ski"

Przykład

Imie Nazwisko
Jan Kowalski
Michał Nowak

żeby w wyniku otrzymać wyłącznie Jak Kowalski
czy ktoś może mi pomóc?

Sama napisałam takie zapytanie:
SELECT imie, nazwisko FROM baza WHERE nazwisko LIKE '%ski%'
ale to zwraca również nazwiska zawierające w sobie podciągi 'ski' typu Teskilawski a tego bym nie chciała.

0

Składnia '%ski' nie działa mi w SQL Management Studio, chyba że coś źle robię:(

0

% oznacza dowolny ciąg znaków.
W Twoim zapytaniu prosisz o wszystkie rekordy zawierające 'ski'. Nie dawaj tego % na końcu, wtedy wybierzesz tylko te kończące się na 'ski'.

0
somekind napisał(a)

% oznacza dowolny ciąg znaków.
W Twoim zapytaniu prosisz o wszystkie rekordy zawierające 'ski'. Nie dawaj tego % na końcu, wtedy wybierzesz tylko te kończące się na 'ski'.

Ale jeśli daję tylko LIKE '%ski' to jako wynik w Management Studio dostaję pustą tabelę. Natomiast dla '%ski%' działa tylko że wiem właśnie iż wynierze mi również nazwiska zawierające 'ski', co może być nie tak?

0

pewnie pole, w którym szukasz, to pole typu char() dopełniane spacjami, zamiast varchar(). znak procenta może być w dowolnym miejscu.
co to znaczy "nie chce działać"? jakie błędy konkretnie się pojawiają?

0
Karolaa napisał(a)
somekind napisał(a)

% oznacza dowolny ciąg znaków.
W Twoim zapytaniu prosisz o wszystkie rekordy zawierające 'ski'. Nie dawaj tego % na końcu, wtedy wybierzesz tylko te kończące się na 'ski'.

Ale jeśli daję tylko LIKE '%ski' to jako wynik w Management Studio dostaję pustą tabelę. Natomiast dla '%ski%' działa tylko że wiem właśnie iż wynierze mi również nazwiska zawierające 'ski', co może być nie tak?

Napisałem sobie przykładową bazę danych z różnymi taki nazwiskami i wszystko działa.
Taki przykład:
Tabela: Osoby, a niej:
id_osoby(int unsigned not null auto increment) ,nazwisko(char(50)),costam(jakiescos(X)).
Nazwiska: Michalski,Biskila,Biskilaski.
Polecenie w mysql: SELECT nazwisko FROM Osoby WHERE nazwisko LIKE '%ski';

Więc albo masz złe typy, albo nie masz w tabeli tego, co szukasz.

Btw. Teskilawski - kończy się na 'ski', więc będzie wyświetlać zawsze ^^

0

@vax: jesteś pewien, że to zadziała, kiedy masz włączone dopełnianie spacjami pól typu char()?

1 użytkowników online, w tym zalogowanych: 0, gości: 1