sql >> Databasteknik >  >> RDS >> Sqlserver

Vad är SYSNAME-datatyp i SQL Server?

sysname är en inbyggd datatyp begränsad till 128 Unicode-tecken som, IIRC, används främst för att lagra objektnamn när man skapar skript. Dess värde kan inte vara NULL

Det är i princip samma sak som att använda nvarchar(128) NOT NULL

REDIGERA

Som nämnde av @Jim i kommentarerna, jag tror inte att det verkligen finns ett affärscase där du skulle använda sysname för att vara ärlig. Det används huvudsakligen av Microsoft när man bygger det interna sys tabeller och lagrade procedurer etc inom SQL Server.

Till exempel genom att köra Exec sp_help 'sys.tables' du kommer att se att kolumnen name definieras som sysname detta beror på att värdet av detta faktiskt är ett objekt i sig (en tabell)

Jag skulle inte oroa mig för mycket om det.

Det är också värt att notera att för de personer som fortfarande använder SQL Server 6.5 och lägre (finns det fortfarande människor som använder det?) den inbyggda typen av sysname är motsvarigheten till varchar(30)

Dokumentation

sysname definieras med dokumentationen för nchar och nvarchar , i kommentarsavsnittet:

sysname är en systemtillförd användardefinierad datatyp som funktionellt motsvarar nvarchar(128) , förutom att den inte är nullbar. sysname används för att referera till databasobjektnamn.

För att förtydliga ovanstående kommentarer, som standard sysname definieras som NOT NULL det är säkert möjligt att definiera den som nullbar. Det är också viktigt att notera att den exakta definitionen kan variera mellan instanser av SQL Server.

Använda speciella datatyper

sysname datatyp används för tabellkolumner, variabler och lagrade procedurparametrar som lagrar objektnamn. Den exakta definitionen avsysname är relaterad till reglerna för identifierare. Därför kan det variera mellan instanser av SQL Server. sysname är funktionellt samma som nvarchar(128) förutom att sysname som standard är INTE NULL. Tidigare versioner av SQL Server, sysname definieras som varchar(30).

Lite mer information om sysname tillåta eller förbjuda NULL värden finns här https://stackoverflow.com/a/52290792/300863

Bara för att det är standard (att vara INTE NULL) garanterar det inte att det blir det!



  1. MySQL Group_Concat() vs T-SQL String_Agg()

  2. Vad är felet Varje härledd tabell måste ha sitt eget alias i MySQL?

  3. Puma Cluster-konfiguration på Heroku

  4. Spara användarmodell i viloläge till Postgres