sql >> Database teknologi >  >> RDS >> Sqlserver

SQL WHERE-sætning, der matcher værdier med efterfølgende mellemrum

Det er det forventede resultat:i SQL Server er = operatør ignorerer efterfølgende mellemrum ved sammenligningen.

SQL Server følger ANSI/ISO SQL-92-specifikationen (afsnit 8.2, , Generelle regler #3) om, hvordan man sammenligner strenge med mellemrum. ANSI-standarden kræver udfyldning af de tegnstrenge, der bruges i sammenligninger, så deres længder matcher, før de sammenlignes. Udfyldningen påvirker direkte semantikken af ​​WHERE- og HAVING-sætningsprædikater og andre Transact-SQL-strengsammenligninger. Transact-SQL anser f.eks. strengene 'abc' og 'abc ' for at være ækvivalente til de fleste sammenligningsoperationer.

Den eneste undtagelse fra denne regel er LIKE-prædikatet. Når højre side af et LIKE-prædikatudtryk har en værdi med et efterfølgende mellemrum, udfylder SQL Server ikke de to værdier i samme længde, før sammenligningen finder sted. Fordi formålet med LIKE-prædikatet per definition er at lette mønstersøgninger snarere end simple strengelighedstests, overtræder dette ikke afsnittet i ANSI SQL-92-specifikationen nævnt tidligere.

Kilde



  1. Hvordan reparerer man en serialiseret streng, der er blevet beskadiget af en forkert bytetællingslængde?

  2. Sådan viser du objektafhængigheder i Access 2016

  3. Forskelle mellem MySql og MySqli i PHP

  4. Microsoft Azure:Hvad det er, og hvordan din virksomhed kan drage fordel af det