Microsoft SQL server gibt bei der Verwendung der LIKE-Klausel nicht alles zurück

Ich habe eine Products Tabelle in SQL server 2014 Express mit datasätzen in ihm.

Einige Produktnamen (datasätze) sind folgende:

  • Testprodukt
  • Teszt termék
  • Teszt termék 2

Wenn ich die folgende Abfrage ausführe, funktioniert alles ganz gut:

 SELECT * FROM Products WHERE name LIKE 'te%' 

Es ruft alle drei datasätze ab. Allerdings, wenn ich benutze

 SELECT * FROM Products WHERE name LIKE 'tes%' 

wird ausgeführt, nur "Testprodukt" wird abgerufen. Und wenn die Abfrage ist

 SELECT * FROM Products WHERE name LIKE 'tesz%' 

dann geht es wieder, es holt alle rekord mit "tesz" ab.

Irgendeine Idee, was das Problem sein könnte?

Vielen Dank für Ihre Hilfe im Voraus.

   

Ich habe dein Backup heruntergeladen.

Die databasekollation ist auf Hungarian_CI_AS .

Sz wird als eigenständiges Schreiben in Ungarisch behandelt ( der zweiunddreißigste Brief des ungarischen Alphabets ). Wenn du dieses Verhalten nicht willst, dann musst du ungarische Kollatierungen vermeiden und es sollte funktionieren. (Ich habe alle SQL server 2014- CI_AS mit Namen beendet, die CI_AS und die einzigen, die das Verhalten zeigen, sind Hungarian_CI_AS , Hungarian_100_CI_AS , SQL_Hungarian_CP1250_CI_AS )

Sie können dies entweder durch Ändern der Spaltenkollation (vorzuziehen) oder durch Hinzufügen einer expliziten COLLATE Klausel zur Abfrage (weniger effizient und blockieren Abfragen wie WHERE name LIKE 'tes%' durch einen Index-search aufgetriggers).

Sie könnten auch erwägen, die database-sorting zu ändern, aber das wird nicht durch die vorhandenen Tabellenspalten, die auf der alten sorting erstellt wurden, kaskadieren.