sql >> Database >  >> RDS >> Sqlserver

Wat is het beste SQL-gegevenstype voor het opslaan van JSON-tekenreeksen?

Zeker NIET :

  • TEXT, NTEXT :deze typen zijn verouderd vanaf SQL Server 2005 en mag niet worden gebruikt voor nieuwe ontwikkeling. Gebruik VARCHAR(MAX) of NVARCHAR(MAX) in plaats daarvan

  • IMAGE , VARBINARY(MAX) :IMAGE is verouderd, net als TEXT/NTEXT , en het heeft echt geen zin om een ​​tekstreeks in een binaire kolom op te slaan....

Dus dat laat in feite VARCHAR(x) . over of NVARCHAR(x) :VARCHAR slaat niet-Unicode-tekenreeksen op (1 byte per teken) en NVARCHAR slaat alles op in een 2-byte-per-teken Unicode-modus. Dus heb je Unicode nodig? Heb je mogelijk Arabische, Hebreeuwse, Chinese of andere niet-West-Europese karakters in je strings? Ga dan met NVARCHAR

De (N)VARCHAR kolommen zijn er in twee smaken:ofwel definieert u een maximale lengte die resulteert in 8000 bytes of minder (VARCHAR tot 8000 tekens, NVARCHAR tot 4000), of als dat niet genoeg is, gebruik dan de (N)VARCHAR(MAX) versies, die tot 2 GByte aan gegevens opslaan.

Bijwerken: SQL Server 2016 zal native JSON-ondersteuning hebben - een nieuwe JSON datatype (dat is gebaseerd op nvarchar ) zal worden geïntroduceerd, evenals een FOR JSON opdracht om uitvoer van een query naar JSON-indeling te converteren

Update #2: in het uiteindelijke product heeft Microsoft geen aparte JSON datatype - in plaats daarvan zijn er een aantal JSON-functies (om databaserijen in JSON te verpakken, of om JSON te ontleden in relationele gegevens) die werken op kolommen van het type NVARCHAR(n)



  1. Integer-volgorde met meerdere kolommen

  2. SQL:rijen met samengevatte waarden invoegen

  3. Zelfstudie gegevens:Vensterfuncties gebruiken

  4. Typecast string naar geheel getal