Znak zmiany znaczenia to ', więc musisz zastąpić cytat dwoma cudzysłowami.
Na przykład
SELECT * FROM PEOPLE WHERE SURNAME='O'Keefe'
staje się
SELECT * FROM PEOPLE WHERE SURNAME='O''Keefe'
To powiedziawszy, prawdopodobnie niewłaściwe jest robienie tego samemu. Twój język może mieć funkcję ucieczki ciągów do użycia w SQL, ale jeszcze lepszą opcją jest użycie parametrów. Zwykle działa to w następujący sposób.
Twoje polecenie SQL będzie wyglądało tak:
SELECT * FROM PEOPLE WHERE SURNAME=?
Następnie, po wykonaniu, przekazujesz "O'Keefe" jako parametr.
Ponieważ SQL jest analizowany przed ustawieniem wartości parametru, nie ma możliwości, aby wartość parametru zmieniła strukturę SQL (a jest to nawet trochę szybsze, jeśli chcesz kilkakrotnie uruchomić tę samą instrukcję z różnymi parametrami).
Powinienem również zwrócić uwagę, że chociaż twój przykład po prostu powoduje błąd, otwierasz się na wiele innych problemów, nie zmieniając odpowiednio ciągów znaków. Zobacz http://en.wikipedia.org/wiki/SQL_injection jako dobry punkt wyjścia lub następujący klasyczny komiks xkcd .