sql >> Databasteknik >  >> RDS >> Oracle

SQL - Varför mellanslag när man jämför tecken?

Du blandar ihop de olika typerna av karaktärer och vad som händer. När du kör:

SELECT * from SOME_TABLE where CUSTOMER_NAME = 'Popeye '

Inga blanksteg läggs till "på varje rad i SOME_TABLE". Frågan är bara bredden på resultaten. Denna bredd ställs in av egenskaperna för kolumnerna i SOME_TABLE, inte av vad som visas i WHERE-satsen.

Om din CUSTOMER_NAME deklareras som ett char(x)-värde måste strängen ha den längden. Säg att det är char(10) och du tilldelar "Popeye" till den. Värdet har sex tecken och detta måste fyllas ut till 10 på något sätt. SQL-standarden är att fylla på höger sida, vilket gör värdet 'Popeye ' .

Om du vill ha strängar med variabel längd, använd varchar eller varchar2.




  1. Översikt över T-SQL PRINT Statement

  2. Mysql:Trimma alla fält i databasen

  3. Inga data hittades eller för många rader undantagsfel inträffade under masspostinsättning

  4. Är Oracles ORA_HASH slumpmässig?