Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist der Datentyp SYSNAME in SQL Server?

sysname ist ein eingebauter Datentyp, der auf 128 Unicode-Zeichen begrenzt ist und, IIRC, hauptsächlich zum Speichern von Objektnamen beim Erstellen von Skripten verwendet wird. Sein Wert darf nicht NULL sein

Es ist im Grunde dasselbe wie die Verwendung von nvarchar(128) NOT NULL

BEARBEITEN

Wie von @Jim in den Kommentaren erwähnt, glaube ich nicht, dass es wirklich einen Geschäftsfall gibt, in dem Sie sysname verwenden würden ehrlich gesagt. Es wird hauptsächlich von Microsoft beim Erstellen des internen sys verwendet Tabellen und gespeicherte Prozeduren usw. innerhalb von SQL Server.

Beispielsweise durch Ausführen von Exec sp_help 'sys.tables' Sie werden sehen, dass die Spalte name ist definiert als sysname das liegt daran, dass der Wert von this eigentlich ein Objekt an sich ist (eine Tabelle)

Ich würde mir darüber keine allzu großen Sorgen machen.

Es ist auch erwähnenswert, dass für diejenigen, die noch SQL Server 6.5 und niedriger verwenden (gibt es noch Leute, die es verwenden?), der eingebaute Typ von sysname ist das Äquivalent von varchar(30)

Dokumentation

sysname wird mit der Dokumentation für nchar definiert und nvarchar , im Abschnitt „Bemerkungen“:

Systemname ist ein vom System bereitgestellter benutzerdefinierter Datentyp, der funktionell äquivalent zu nvarchar(128) ist , außer dass es nicht nullable ist. Systemname wird verwendet, um Datenbankobjektnamen zu referenzieren.

Um die obigen Bemerkungen zu verdeutlichen, standardmäßig Systemname ist als NOT NULL definiert Es ist sicherlich möglich, es als nullable zu definieren. Es ist auch wichtig zu beachten, dass die genaue Definition zwischen Instanzen von SQL Server variieren kann.

Spezielle Datentypen verwenden

Der Systemname Der Datentyp wird für Tabellenspalten, Variablen und gespeicherte Prozedurparameter verwendet, die Objektnamen speichern. Die genaue Definition vonsysname bezieht sich auf die Regeln für Identifikatoren. Daher kann es zwischen Instanzen von SQL Server variieren. Systemname ist funktional dasselbe wie nvarchar(128) außer dass standardmäßig sysname ist NICHT NULL. In früheren Versionen von SQL Server, sysname ist als varchar(30) definiert.

Einige weitere Informationen zu sysname Erlauben oder Verbieten von NULL Werte finden Sie hier https://stackoverflow.com/a/52290792/300863

Nur weil es der Standardwert ist (nicht NULL zu sein), ist das noch lange keine Garantie dafür!