sql >> Database >  >> RDS >> Sqlserver

SQL WHERE-component die overeenkomt met waarden met volgspaties

Dat is het verwachte resultaat:in SQL Server de = operator negeert volgspaties bij het maken van de vergelijking.

SQL Server volgt de ANSI/ISO SQL-92-specificatie (Sectie 8.2, , Algemene regels #3) voor het vergelijken van strings met spaties. De ANSI-standaard vereist opvulling voor de tekenreeksen die in vergelijkingen worden gebruikt, zodat hun lengte overeenkomt voordat ze worden vergeleken. De opvulling is rechtstreeks van invloed op de semantiek van de WHERE- en HAVING-clausulepredikaten en andere Transact-SQL-tekenreeksvergelijkingen. Transact-SQL beschouwt bijvoorbeeld de tekenreeksen 'abc' en 'abc' als equivalent voor de meeste vergelijkingsbewerkingen.

De enige uitzondering op deze regel is het predikaat LIKE. Wanneer de rechterkant van een LIKE-predikaatexpressie een waarde met een volgspatie bevat, vult SQL Server de twee waarden niet tot dezelfde lengte voordat de vergelijking plaatsvindt. Omdat het doel van het LIKE-predikaat per definitie is om patroonzoekopdrachten te vergemakkelijken in plaats van eenvoudige tekenreeksgelijkheidstests, is dit niet in strijd met de eerder genoemde sectie van de ANSI SQL-92-specificatie.

Bron



  1. VERTALEN (... GEBRUIKEN) Functie in Oracle

  2. Evolutie van fouttolerantie in PostgreSQL:tijdreizen

  3. rijnummer verhogen wanneer waarde van veld verandert in Oracle

  4. Unicode-tekens vervangen in PostgreSQL