sql >> Databasteknik >  >> RDS >> Sqlserver

Vilken är den bästa SQL-datatypen för att lagra JSON-sträng?

Absolut INTE :

  • TEXT, NTEXT :dessa typer är utfasade från och med SQL Server 2005 och bör inte användas för nyutveckling. Använd VARCHAR(MAX) eller NVARCHAR(MAX) istället

  • IMAGE , VARBINARY(MAX) :IMAGE är utfasad precis som TEXT/NTEXT , och det är verkligen ingen idé att lagra en textsträng i en binär kolumn...

Så det lämnar i princip VARCHAR(x) eller NVARCHAR(x) :VARCHAR lagrar icke-Unicode-strängar (1 byte per tecken) och NVARCHAR lagrar allt i ett Unicode-läge med 2 byte per tecken. Så behöver du Unicode? Har du eventuellt arabiska, hebreiska, kinesiska eller andra icke-västeuropeiska tecken i dina strängar? Gå sedan med NVARCHAR

(N)VARCHAR kolumner finns i två varianter:antingen definierar du en maximal längd som resulterar i 8000 byte eller mindre (VARCHAR upp till 8000 tecken, NVARCHAR upp till 4000), eller om det inte räcker, använd (N)VARCHAR(MAX) versioner, som lagrar upp till 2 GByte data.

Uppdatering: SQL Server 2016 kommer att ha inbyggt JSON-stöd - en ny JSON datatyp (som är baserad på nvarchar ) kommer att introduceras, liksom en FOR JSON kommando för att konvertera utdata från en fråga till JSON-format

Uppdatering #2: i slutprodukten inkluderade Microsoft inte en separat JSON datatype - istället finns det ett antal JSON-funktioner (för att paketera databasrader till JSON, eller för att analysera JSON till relationsdata) som fungerar på kolumner av typen NVARCHAR(n)



  1. hur gör jag en loop från terminalen utan överdrivna lösenordsförfrågningar

  2. Våren 2011 PostgreSQL-konferenser, USA/Kanada

  3. Hur kan jag göra tre tabell JOINs i en UPDATE-fråga?

  4. Säkerhetskopiera MySQL-databas med CodeIgniter