If-Koubou

Wyszukaj wiersze ze znakami specjalnymi w SQL Server

Wyszukaj wiersze ze znakami specjalnymi w SQL Server (Jak)

Podczas rozwiązywania problemów z programowaniem zauważyłem, że nie można użyć 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 komuś innemu.

Powiedzmy, że chcesz znaleźć dowolne 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ć operatora 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 informuje silnik 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.