2016-03-10 8 views
5

Rozważmy następującą tabeląWybór na podstawie Thorn znaków MS SQL Server

Words Table

stworzony przez:

CREATE TABLE WORD_TEST(WORD NVARCHAR(100)); 

INSERT INTO WORD_TEST(WORD) VALUES('these'),('are'),('some'),('test'),('words'),('including'),('puþpies'),('with'),('parents'); 

obwieszczeniu Thorn (TH) postać w puþpies słownych.

Teraz jeśli chcę zrobić coś podobnego znaleźć wszystkie wiersze, które mają tę postać w nim chciałbym spróbować czegoś podobnego

SELECT * FROM WORD_TEST WHERE WORD LIKE '%þ%'; 

co daje wynik

enter image description here

ale problem jest to, że pasuje również do "th" w słowach. Próbowałem również następujące odmiany, które dają ten sam wynik.

SELECT * FROM WORD_TEST WHERE WORD LIKE N'%þ%'; 
SELECT * FROM WORD_TEST WHERE WORD LIKE '%' + NCHAR(254) + '%'; 

Jak mogę wybrać w oparciu o słowa zawierające ten znak?

+2

ta pomoże Ci: http://stackoverflow.com/a/29013145/2203084 –

+4

'WYBIERZ * Z WORD_TEST GDZIE SŁOWO PODOBNE '% þ%' COLLATE Latin1_General_100_BIN2;' –

+0

@FelixPamittan Dzięki dodaniu sortowania działa. Wygląda na to, że potrzebuję lepszych kryteriów wyszukiwania, ponieważ nigdy nie znalazłem takiej odpowiedzi! –

Odpowiedz

1

Alternatywą sugestią Felixa zmienić oświadczenie SELECT byłoby ustawić sortowania kolumny WORD podczas tworzenia tabeli tak, aby nie rzucać charakter cierń do czegoś innego (podobno th w tym przypadku):

CREATE TABLE WORD_TEST(WORD NVARCHAR(100) COLLATE Latin1_General_100_BIN2); 

teraz robi swoje oświadczenie SELECT powinno dać oczekiwane rezultaty:

SELECT * FROM WORD_TEST WHERE WORD LIKE '%þ%'; 
+0

Dzięki, Tak, sortowanie robi lewę, niestety nie mogę zmienić utworzenia tabeli, tylko dodałem ją do celów testowych/pokazowych. Jednak dodanie go do kryteriów wyboru, jak wskazał Felix, rozwiązuje problem. –