Główna » jak » Wyszukaj wiersze ze znakami specjalnymi w SQL Server

    Wyszukaj wiersze ze znakami specjalnymi w SQL Server

    Podczas rozwiązywania problemu z programowaniem zauważyłem, że nie można używać wyszukiwania LIKE dla kolumn zawierających specjalne znaki takie jak% lub _ bez użycia specjalnej składni. Znalezienie problemu zajęło tylko kilka minut, ale zapamiętanie składni jest zawsze łatwiejsze, jeśli o tym napiszemy.

    Więc tak, ten post jest wyłącznie dla mojej korzyści. Mam nadzieję, że pomoże to także komuś innemu.

    Powiedzmy, że chcesz znaleźć jakiekolwiek pola zawierające tekst "100%", więc połączysz to zapytanie:

    SELECT * FROM nazwa tabeli WHERE nazwa pola LIKE '% 100 %%'

    Zamiast tego, co chcesz, otrzymasz wszystkie wiersze zawierające "100", a także wiersze zawierające "100%".

    Problem polega na tym, że SQL Server używa znaku procentu, podkreślenia i nawiasów kwadratowych jako znaków specjalnych. Po prostu nie można ich użyć jako zwykłego znaku w zapytaniu LIKE bez ucieczki.

    Ucieczka z kwadratowego uchwytu

    Możesz otoczyć% lub _ nawiasami kwadratowymi, aby powiedzieć SQL Server, że znak wewnątrz jest zwykłym znakiem.

    SELECT * FROM nazwa tabeli WHERE nazwa_pola LIKE '% 100 [%]%'

    T-SQL ESCAPE Składnia

    Alternatywnie możesz dodać operator ESCAPE do zapytania i dodać znak \ przed wartością, którą chcesz uciec.

    SELECT * FROM nazwa tabeli WHERE nazwa pola LIKE '% 100 \ %%' ESCAPE '\'

    Część ESCAPE "\" zapytania wysyła zapytanie do silnika SQL, aby interpretował znak po \ jako znaku dosłownym zamiast jako symbol wieloznaczny.

    Osobiście uważam, że druga metoda jest łatwiejsza w obsłudze i można jej użyć również do ucieczki z kwadratowego wspornika.