sql >> Database teknologi >  >> RDS >> Oracle

Tomt tegn ignoreret i where-sætning

Ser på Oracle-dokumentationen om bogstaver :

og dokumentationen af ​​blankpolstret sammenligningssemantik a> siger:

Da venstre side af sammenligningen er en CHAR(10) og højre side er en bogstavelig tekst, så bruges blankpolstret sammenligningssemantik og 'hello ' = 'hello' er sandt.

Du kan se dette i det simple eksempel:

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

Opdater :

[TL;DR] Denne adfærd har optrådt i alle versioner af Oracle siden mindst Oracle 7 (udgivet i 1992). Jeg holdt op med at søge efter dokumentationen om udgivelser, der er over to årtier gamle, men jeg forventer, at du vil opdage, at dette har været adfærden i de fleste (alle?) versioner.

Her er dokumentationen for de forskellige versioner:



  1. Sammenligning med efterfølgende mellemrum i MySQL

  2. Sådan krypterer du en opdelt database i Access 2016

  3. Vælg alle datoer mellem to datoer, der ikke bruger en tabel (generer liste over datoer)

  4. SQLAlchemy:Opret sletteforespørgsel ved hjælp af selv-join på MySQL