sql >> Databáze >  >> RDS >> Oracle

V klauzuli where je ignorován prázdný znak

Při pohledu na dokumentaci Oracle na literály :

a dokumentaci prázdné sémantiky porovnávání uvádí:

Protože levá strana porovnání je CHAR(10) a na pravé straně je textový doslovný text, pak je použita sémantika pro srovnání s prázdnými výplněmi a 'hello ' = 'hello' je pravda.

Můžete to vidět na jednoduchém příkladu:

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

Aktualizovat :

[TL;DR] Toto chování se objevilo ve všech verzích Oracle minimálně od Oracle 7 (vydáno v roce 1992). Přestal jsem hledat dokumentaci k vydáním starým přes dvě dekády, ale očekávám, že zjistíte, že toto chování bylo ve většině (všech?) verzích.

Zde je dokumentace pro různé verze:



  1. Proč EF generuje poddotaz pro jednoduchý dotaz?

  2. Jak připojit aplikaci C# Windows mobile 6.5 k databázi Postgres?

  3. Jak vybrat datum bez času v SQL

  4. Upgrade Grid Control po ručním upgradu DB