Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Co to jest typ danych SYSNAME w SQL Server?

sysname to wbudowany typ danych ograniczony do 128 znaków Unicode, który, IIRC, jest używany głównie do przechowywania nazw obiektów podczas tworzenia skryptów. Jego wartość nie może być NULL

Zasadniczo jest to to samo, co użycie nvarchar(128) NOT NULL

EDYTUJ

Jak wspomniał @Jim w komentarzach, nie sądzę, aby istniał przypadek biznesowy, w którym użyłbyś sysname szczerze mówiąc. Jest używany głównie przez Microsoft podczas budowania wewnętrznego sys tabele i procedury składowane itp. w SQL Server.

Na przykład, wykonując Exec sp_help 'sys.tables' zobaczysz, że kolumna name jest zdefiniowany jako sysname dzieje się tak, ponieważ wartość tego jest w rzeczywistości obiektem samym w sobie (tabela)

Nie martwiłbym się tym zbytnio.

Warto również zauważyć, że dla tych osób, które nadal używają SQL Server 6.5 i niższych (czy są jeszcze osoby, które go używają?) wbudowany typ sysname jest odpowiednikiem varchar(30)

Dokumentacja

sysname jest zdefiniowany w dokumentacji nchar i nvarchar , w sekcji uwag:

nazwa systemu to dostarczony przez system typ danych zdefiniowany przez użytkownika, który jest funkcjonalnie równoważny nvarchar(128) , z tą różnicą, że nie ma wartości null. nazwa systemu służy do odwoływania się do nazw obiektów bazy danych.

Aby wyjaśnić powyższe uwagi, domyślnie nazwa systemu jest zdefiniowany jako NOT NULL z pewnością można go zdefiniować jako dopuszczający wartość null. Należy również zauważyć, że dokładna definicja może się różnić w zależności od instancji SQL Server.

Korzystanie ze specjalnych typów danych

nazwa systemu typ danych jest używany dla kolumn tabeli, zmiennych i parametrów procedury składowanej, które przechowują nazwy obiektów. Dokładna definicja sysname dotyczy zasad dotyczących identyfikatorów. Dlatego może się różnić między instancjami SQL Server. nazwa systemu jest funkcjonalnie taki sam jak nvarchar(128) z wyjątkiem tego, że domyślnie sysname NIE JEST NULL. Wcześniejsze wersje SQL Server, sysname jest zdefiniowany jako varchar(30).

Więcej informacji o sysname zezwalanie lub blokowanie NULL wartości można znaleźć tutaj https://stackoverflow.com/a/52290792/300863

Tylko dlatego, że jest to ustawienie domyślne (nie jest NULL) nie gwarantuje, że tak będzie!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Definiowanie relacji jeden-do-jednego w SQL Server

  2. Jak mogę zmienić tryb SQL Server Windows na tryb mieszany (SQL Server 2008)?

  3. Dodaj logowanie do serwera połączonego w programie SQL Server (przykład T-SQL)

  4. Skrypt do zapisywania danych varbinary na dysku

  5. Statystyka operacji we/wy pliku wydajności programu SQL Server