Mam trudności ze zrozumieniem, dlaczego warunek SELECT
z warunkiem LIKE
na emulatorze 4 B szerokości (http://emojipedia.org/eyes/) zwraca wszystkie wiersze w tabeli.SQL Server 2014 LIKE z 4 znakami o szerokości B zwraca całą tabelę
Wynik z pierwszego wyboru to pojedynczy wiersz emoji. Jednak wynik z drugiego wyboru, gdzie ciąg jest oznaczony jako UNICODE z prefiksem N, to wszystkie wiersze.
Dlaczego drugi wybór pasuje do wszystkich wierszy w tabeli?
Rzeczywista Scenariusz Mam aplikacji internetowej, na której użytkownicy mogą wyszukiwania katalogu, a jeśli oni wyszukiwać za emotikonom cała tabela jest zwracany, zamiast odpowiednio dobranych rzędach.
ASP.NET MVC 5 web application <-> Web Api 2 <-> EF -> SQL Server
Aktualizacja Moje testy SQL
jest błędne, gdyż @deroby wskazał oświadczenia INSERT
powinny być oznakowane N „...” być prawidłowo włożona jako Unicode.
Rozwiązanie Jak powiedział @deroby, wydaje się, że jest to problem z kolacją, zmiana na Finnish_Swedish_100_CI_AS
sprawia, że wszystko działa zgodnie z oczekiwaniami.
select * from #Test where Value like N'%%' COLLATE Finnish_Swedish_100_CI_AS