sql >> Databasteknik >  >> RDS >> Sqlserver

SQL WHERE-sats som matchar värden med efterföljande mellanslag

Det är det förväntade resultatet:i SQL Server är = operatören ignorerar efterföljande mellanslag när jämförelsen görs.

SQL Server följer ANSI/ISO SQL-92-specifikationen (avsnitt 8.2, , Allmänna regler #3) om hur man jämför strängar med mellanslag. ANSI-standarden kräver utfyllnad för de teckensträngar som används i jämförelser så att deras längder matchar innan de jämförs. Utfyllnaden påverkar direkt semantiken för WHERE- och HAVING-satspredikaten och andra Transact-SQL-strängjämförelser. Transact-SQL anser till exempel att strängarna 'abc' och 'abc ' är likvärdiga för de flesta jämförelseoperationer.

Det enda undantaget från denna regel är LIKE-predikatet. När den högra sidan av ett LIKE-predikatuttryck har ett värde med ett efterföljande mellanslag, fyller SQL Server inte ut de två värdena till samma längd innan jämförelsen sker. Eftersom syftet med LIKE-predikatet per definition är att underlätta mönstersökningar snarare än enkla stränglikhetstester, bryter detta inte mot avsnittet i ANSI SQL-92-specifikationen som nämndes tidigare.

Källa



  1. Hur LOCATE() fungerar i MariaDB

  2. SQL delad kommaseparerad rad

  3. JSON_ARRAY_INSERT() – Infoga värden i en JSON-array i MySQL

  4. Körs servern på host localhost (::1) och accepterar TCP/IP-anslutningar på port 5432?