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.