sql >> Databáze >  >> RDS >> Sqlserver

Co je datový typ SYSNAME v SQL Server?

sysname je vestavěný datový typ omezený na 128 znaků Unicode, který, IIRC, se používá především k ukládání názvů objektů při vytváření skriptů. Jeho hodnota nemůže být NULL

Je to v podstatě stejné jako použití nvarchar(128) NOT NULL

UPRAVIT

Jak uvedl @Jim v komentářích, nemyslím si, že ve skutečnosti existuje obchodní případ, kdy byste použili sysname být upřímný. Používá ho hlavně Microsoft při budování interního sys tabulky a uložené procedury atd. v rámci SQL Server.

Například spuštěním Exec sp_help 'sys.tables' uvidíte, že sloupec name je definován jako sysname je to proto, že hodnota this je ve skutečnosti objekt sám o sobě (tabulka)

Moc bych se tím netrápil.

Za zmínku také stojí, že pro ty lidi, kteří stále používají SQL Server 6.5 a nižší (jsou stále lidé, kteří jej používají?) je vestavěný typ sysname je ekvivalentem varchar(30)

Dokumentace

sysname je definován v dokumentaci pro nchar a nvarchar , v sekci poznámky:

název systému je systémem dodaný uživatelsky definovaný datový typ, který je funkčně ekvivalentní nvarchar(128) , kromě toho, že není nulovatelný. název systému se používá k odkazování na názvy databázových objektů.

Abychom objasnili výše uvedené poznámky, výchozí název systému je definován jako NOT NULL je jistě možné ji definovat jako nulovatelnou. Je také důležité poznamenat, že přesná definice se může lišit mezi instancemi SQL Server.

Použití speciálních datových typů

název systému datový typ se používá pro sloupce tabulky, proměnné a parametry uložené procedury, které ukládají názvy objektů. Přesná definicenázev systému souvisí s pravidly pro identifikátory. Proto se může lišit mezi instancemi SQL Server. název systému je funkčně stejný jako nvarchar(128) kromě toho, že ve výchozím nastavení je název systému NENÍ NULL. Dřívější verze SQL Server, sysname je definován jako varchar(30).

Některé další informace o sysname povolení nebo zakázání NULL hodnoty najdete zde https://stackoverflow.com/a/52290792/300863

Jen proto, že je výchozí (není NULL), nezaručuje, že tomu tak bude!



  1. Existuje nějaký způsob, jak zajistit, aby se fond připojení JBoss znovu připojil k Oracle, když se připojení pokazí?

  2. 2013 MVP Summit :Rychlý přehled a nahlédnutí vpřed

  3. Jak zrušit tabulky a sloupce pomocí SQL

  4. Rozdíl mezi sys.parameters, sys.system_parameters a sys.all_parameters v SQL Server