Z pewnością NIE :
-
TEXT, NTEXT
:te typy są przestarzałe od SQL Server 2005 i nie powinny być używane do nowych prac programistycznych. UżyjVARCHAR(MAX)
lubNVARCHAR(MAX)
zamiast tego -
IMAGE
,VARBINARY(MAX)
:IMAGE
jest przestarzały, podobnie jakTEXT/NTEXT
i naprawdę nie ma sensu przechowywać ciągu tekstowego w kolumnie binarnej....
Więc zasadniczo pozostawia VARCHAR(x)
lub NVARCHAR(x)
:VARCHAR
przechowuje ciągi inne niż Unicode (1 bajt na znak) i NVARCHAR
przechowuje wszystko w trybie Unicode 2 bajty na znak. Więc potrzebujesz Unicode? Czy masz w swoich ciągach znaki arabskie, hebrajskie, chińskie lub inne niezachodnioeuropejskie? Następnie przejdź z NVARCHAR
(N)VARCHAR
kolumny występują w dwóch odmianach:albo definiujesz maksymalną długość, która daje w wyniku 8000 bajtów lub mniej (VARCHAR
do 8000 znaków, NVARCHAR
do 4000) lub jeśli to nie wystarczy, użyj (N)VARCHAR(MAX)
wersje, które przechowują do 2 GB danych.
Aktualizacja: Serwer SQL 2016 będzie miał natywną obsługę JSON - nowy JSON
typ danych (który jest oparty na nvarchar
) oraz FOR JSON
polecenie do konwersji danych wyjściowych z zapytania do formatu JSON
Aktualizacja nr 2: w produkcie końcowym Microsoft nie uwzględnił oddzielnego JSON
datatype - zamiast tego istnieje szereg funkcji JSON (do pakowania wierszy bazy danych w JSON lub parsowania JSON na dane relacyjne), które operują na kolumnach typu NVARCHAR(n)