2012-05-07 23 views
17

Szukałem listy znaków specjalnych, które muszą zostać usunięte na serwerze ms sql, ale nie mogłem znaleźć jednej i większości odpowiedzi, które widziałem w podobnych pytaniach, które powinny korzystać z Parameterized queries .., które Już to robię, ale ramy, których używam, nie są dla mnie ucieczką.Znaki, które muszą być zmienione w Tsql

Dlatego myślałem dam kilka z tych spróbować i zobaczyć, który z nich zawiedzie .... i próbowałem proste zapytanie

select * from x where value = '<characters>' 

w takim zapytaniu próbowałem prawie wszystkie postacie mogę znaleźć na mojej klawiaturze i wszystkie wydają się działać ... poza Singe Quote ... to się nie udaje.

Dlatego chcę wiedzieć listę znaków, które są nieważne i należy uciekły w serwerze MS SQL - TSQL i nie chcą podjąć ryzyko tylko uciekając się apostrof i zostawić resztę, które mogą powodować problemy

Doceń swoją pomoc

+2

Huh? Co jest nie tak z sparametryzowanymi zapytaniami? – SLaks

+0

zachowują się różnie w różnych strukturach ... nie działają dla mnie –

+5

Powinieneś rozwiązać ten problem. – SLaks

Odpowiedz

30

Jedyny znak, który potrzebuje ucieczki w ciągu znaków, to pojedynczy cudzysłów (który składa się z dwóch pojedynczych cudzysłowów). W przeciwnym razie jest to ciąg znaków, a t-sql nie będzie się już z tym wiązał.

Jeśli używasz LIKE oświadczenie, zobacz ten SO temat Escape a string in SQL Server so that it is safe to use in LIKE expression

Tak na marginesie, wszelkie ramy, które nie pozwala mi używać parametrów, które nie właściwie uciec rzeczy dla mnie, to trudno zatrzymać. Próba ręcznego odszyfrowania wejścia łańcuchowego jest jak poleganie na metodzie wyciągania; ostatecznie cię dostanie.

+0

Dzięki HackedByChinese, to było jedyne potwierdzenie, którego szukałem! –

+1

Po raz pierwszy widziałem ręczne wymuszanie zapytań porównywanych do wyciągania ... lol. – Corbin

+0

Podziękowania dla Apache Cayenne za to! –

0

Nie jestem pewien, czy to prawda.

% i . oraz inne symbole wieloznaczne w zależności od zapytania, mogą również wymagać ukrywania się. gdzie szukasz kropki. To się nie powiedzie

+1

Proszę nie niszczyć odpowiedzi. Jeśli uważasz, że jest niepoprawny i chcesz go usunąć, kliknij link "usuń" pod swoim wpisem. – Tunaki

0

Chciałem tylko powiedzieć, że _ (podkreślenie) również musi zostać zmienione.

select * from Produkty gdzie SomeColumn jak „% FD [_]”

Nawiasem mówiąc, nic złego sparametryzowanych kwerend, ale czasami chcesz iść do konsoli zarządzania SQL i szybko uruchomić kwerendę, aby znaleźć coś z.

Powiązane problemy