sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er SYSNAME-datatypen i SQL Server?

sysname er en indbygget datatype begrænset til 128 Unicode-tegn, der, IIRC, primært bruges til at gemme objektnavne ved oprettelse af scripts. Dens værdi kan ikke være NULL

Det er grundlæggende det samme som at bruge nvarchar(128) NOT NULL

REDIGER

Som nævnt af @Jim i kommentarerne, tror jeg ikke, der er en rigtig business case, hvor du ville bruge sysname for at være ærlig. Det bruges hovedsageligt af Microsoft, når du bygger det interne sys tabeller og lagrede procedurer osv. i SQL Server.

For eksempel ved at udføre Exec sp_help 'sys.tables' du vil se, at kolonnen name er defineret som sysname dette er fordi værdien af ​​dette faktisk er et objekt i sig selv (en tabel)

Jeg ville ikke bekymre mig for meget om det.

Det er også værd at bemærke, at for de mennesker, der stadig bruger SQL Server 6.5 og lavere (er der stadig folk, der bruger det?) den indbyggede type sysname svarer til varchar(30)

Dokumentation

sysname er defineret med dokumentationen for nchar og nvarchar , i bemærkningssektionen:

sysname er en systemleveret brugerdefineret datatype, der funktionelt svarer til nvarchar(128) , bortset fra at den ikke er nullbar. sysname bruges til at henvise til databaseobjektnavne.

For at præcisere ovenstående bemærkninger, som standard sysname er defineret som NOT NULL det er bestemt muligt at definere den som nullbar. Det er også vigtigt at bemærke, at den nøjagtige definition kan variere mellem forekomster af SQL Server.

Brug af specielle datatyper

sysname datatype bruges til tabelkolonner, variabler og storedprocedure-parametre, der gemmer objektnavne. Den nøjagtige definition afsysname er relateret til reglerne for identifikatorer. Derfor kan det variere mellem forekomster af SQL Server. sysname er funktionelt det samme som nvarchar(128) bortset fra at sysname som standard er IKKE NULL. Tidligere versioner af SQL Server, sysname er defineret som varchar(30).

Nogle yderligere oplysninger om sysname tillade eller forbyde NULL værdier kan findes her https://stackoverflow.com/a/52290792/300863

Bare fordi det er standarden (at være IKKE NULL), garanterer det ikke, at det bliver det!



  1. Minimering af virkningen af ​​at udvide en IDENTITY-søjle – del 1

  2. Returner basisdatatypen fra en SQL_variantværdi i SQL Server

  3. Oracle 12.2 Sharding

  4. Brug af INSERT INTO fra SQL Server til at ændre Salesforce-data