2010-09-07 11 views
41

pomocą SQL Server 2008. Mam tabeli z następującą kolumnę: następującoSQL Server LIKE zawierający wspornik znaków

sampleData (nvarchar(max)) 

wartość tej kolumny w niektórych z tych wierszy są sformatowane listy:

["value1","value2","value3"] 

Próbuję napisać proste zapytanie, które zwróci wszystkie wiersze z listami sformatowanymi w ten sposób, po prostu wykrywając nawias otwierający.

SELECT * from sampleTable where sampleData like '[%' 

Powyższe zapytanie nie działa, ponieważ „[” jest znakiem specjalnym, a ja nie mogę dla życia mnie dowiedzieć się, jak uciec wspornik więc moje zapytanie robi to, co chcę.

Dzięki za wszelkie sugestie!

Odpowiedz

57
... like '[[]%' 

użyć [ ] otoczyć znak specjalny (lub zakres)

patrz sekcja "Używanie symboli wieloznacznych jako literały" w SQL Server LIKE

Edytuj, 24 Lis 2011

Uwaga: Nie musisz umknąć przed nawiasem zamykającym ...

23

Oprócz odpowiedzi gbn, inną metodą jest użycie ESCAPE opcja:

SELECT * from sampleTable where sampleData like '\[%' ESCAPE '\' 

Zobacz documentation szczegóły

2

Tylko uwaga tutaj dalej ... Jeśli chcesz dołączyć wspornik (lub innych specjalności) w zestawie znaków, trzeba tylko opcja użycia ESCAPE (ponieważ już używasz nawiasów do wskazania zestawu). Również MUSISZ określić klauzulę ESCAPE, ponieważ nie ma domyślnego znaku escape (nie jest to domyślnie ukośnik odwrotny, jak początkowo sądziłem, pochodzący z tła C).

np. jeśli chcę wyciągnąć wiersze, gdzie kolumna zawiera niczego poza zestawem znaków „do przyjęcia”, ze względu na argument, powiedzmy znaki alfanumeryczne ... moglibyśmy zacząć od tego

SELECT * FROM MyTest WHERE MyCol LIKE '%[^a-zA-Z0-9]%' 

Więc wracamy czegokolwiek który ma dowolny znak, którego nie ma na liście (ze względu na wiodącą gwiazdę).

Gdybyśmy wtedy chcesz dodać znaki specjalne, w tym zestaw dopuszczalnych znaków, nie możemy gniazdo nawiasy tak musimy użyć znaku ucieczki, jak to ...

SELECT * FROM MyTest WHERE MyCol LIKE '%[^a-zA-Z0-9\[\]]%' ESCAPE '\' 

poprzedzających wsporniki (indywidualnie) z odwrotnym ukośnikiem i wskazującym, że używamy ukośnika odwrotnego dla znaku ucieczki, pozwala nam uciec z nich w nawiasach funkcyjnych wskazujących zbiór znaków.

Przepraszamy za głupi przykład, ale mam nadzieję, że ktoś pomaga

+0

Więc mamy pecha jeśli używamy PATINDEX? – Sam

Powiązane problemy