sql >> Database >  >> RDS >> Oracle

Waar is het SQL National Character (NCHAR)-gegevenstype eigenlijk voor?

"NATIONAAL" betekent in dit geval karakters die specifiek zijn voor verschillende nationaliteiten. Vooral talen in het Verre Oosten hebben zoveel karakters dat één byte niet genoeg ruimte is om ze allemaal te onderscheiden. Dus als u een app met alleen Engels (ascii) of een veld dat alleen Engels is , kun je ontsnappen met de oudere CHAR- en VARCHAR-typen, die slechts één byte per teken toestaan.

Dat gezegd hebbende, zou u meestal NCHAR/NVARCHAR moeten gebruiken. Zelfs als u niet denkt dat u meerdere talen in uw gegevens hoeft te ondersteunen (of mogelijk niet hoeft te ondersteunen), moeten zelfs apps die alleen in het Engels zijn, in staat zijn om beveiligingsaanvallen met behulp van tekens in een vreemde taal op een verstandige manier af te handelen.

Naar mijn mening is de enige plaats waar de oudere CHAR/VARCHAR-types nog steeds de voorkeur hebben, voor vaak verwezen ascii-only interne codes en gegevens op platforms zoals Sql Server die het onderscheid ondersteunen - gegevens die het equivalent zouden zijn van een enum in een clienttaal zoals C++ of C#.



  1. Verwijdert het verwijderen van een rij uit de weergave de rij uit de basistabel - MySQL?

  2. Gebruikersinvoer filteren

  3. Een record dupliceren in MySQL

  4. Hoe PostgreSQL 12 op Ubuntu 20.04/18.04/16.04 te installeren?