sql >> Database teknologi >  >> RDS >> Sqlserver

Hvad er den bedste SQL-datatype til lagring af JSON-streng?

Bestemt IKKE :

  • TEXT, NTEXT :disse typer er udfasede fra SQL Server 2005 og bør ikke bruges til nyudvikling. Brug VARCHAR(MAX) eller NVARCHAR(MAX) i stedet

  • IMAGE , VARBINARY(MAX) :IMAGE er forældet ligesom TEXT/NTEXT , og der er virkelig ingen mening i at gemme en tekststreng i en binær kolonne...

Så det efterlader grundlæggende VARCHAR(x) eller NVARCHAR(x) :VARCHAR gemmer ikke-Unicode-strenge (1 byte pr. tegn) og NVARCHAR gemmer alt i en Unicode-tilstand på 2 byte pr. tegn. Så har du brug for Unicode? Har du muligvis arabiske, hebraiske, kinesiske eller andre ikke-vesteuropæiske tegn i dine strenge? Gå derefter med NVARCHAR

(N)VARCHAR kolonner kommer i to varianter:enten definerer du en maksimal længde, der resulterer i 8000 bytes eller mindre (VARCHAR op til 8000 tegn, NVARCHAR op til 4000), eller hvis det ikke er nok, brug (N)VARCHAR(MAX) versioner, som gemmer op til 2 GByte data.

Opdatering: SQL Server 2016 vil have indbygget JSON-understøttelse - en ny JSON datatype (som er baseret på nvarchar ) vil blive introduceret, samt en FOR JSON kommando til at konvertere output fra en forespørgsel til JSON-format

Opdatering #2: i det endelige produkt inkluderede Microsoft ikke en separat JSON datatype - i stedet er der en række JSON-funktioner (for at pakke databaserækker ind i JSON eller at parse JSON til relationelle data), som fungerer på kolonner af typen NVARCHAR(n)



  1. ORACLE - regexp_substr for at returnere nulværdier

  2. Kunne ikke indlæse fil eller assembly Oracle.DataAccess

  3. oprette synonym ora-01031 utilstrækkelige privilegier

  4. MySQL design med dynamisk antal felter