sql >> Database >  >> RDS >> Oracle

Leeg teken genegeerd in where-clausule

Kijkend naar de Oracle-documentatie op literals :

en de documentatie van blanco vergelijkingssemantiek staten:

Aangezien de linkerkant van de vergelijking een CHAR(10) . is en de rechterkant is een letterlijke tekst, dan worden blanco-opgevulde vergelijkingssemantiek gebruikt en 'hello ' = 'hello' is waar.

U kunt dit zien in het eenvoudige voorbeeld:

SELECT * FROM DUAL WHERE 'hello    ' = 'hello';

Bijwerken :

[TL;DR] Dit gedrag komt voor in alle versies van Oracle sinds in ieder geval Oracle 7 (uitgebracht in 1992). Ik ben gestopt met zoeken naar de documentatie over releases van meer dan twee decennia oud, maar ik verwacht dat je zult merken dat dit het gedrag is in de meeste (alle?) versies.

Hier is de documentatie voor de verschillende versies:



  1. Als PostgreSQL count(*) altijd traag is, hoe moet u dan complexe query's pagineren?

  2. mysql verschillende waarden zonder lege string en NULL

  3. Hoe bereik je een unieke automatisch verhoogde id voor rijen in meerdere tabellen?

  4. Hoe krijg ik een efficiënte Sql Server-deadlock-afhandeling in C# met ADO?