2017-08-25 19 views
2

を照会して、私は、次のJSONデータエスケープ文字T-SQL OPENJSONは

DECLARE @jsonData NVARCHAR(MAX) 
SET @jsonData = 
'{ 
    "insertions":[ 
     { 
     "id":"58735A79-DEA8-462B-B3EB-C2797CA9D44E", 
     "last-modified":"2017-08-08 13:07:32", 
     "label":"HelloWorld1" 
     }, 
     { 
     "id":"00565BCD-4240-46CF-A48F-849CB5A8114F", 
     "last-modified":"2017-08-08 13:11:38", 
     "label":"HelloWorld12" 
     } 
    ] 
}' 

そして、それからの選択を実行しようとしているがあります。

SELECT 
    * 
FROM 
    OPENJSON(JSON_QUERY(@jsonData,'$.insertions')) 
WITH 
    (uuid UNIQUEIDENTIFIER '$.id', 
    modified DATETIME '$.last-modified', 
    Label NVARCHAR(128) '$.label' 
    ) 

それが最後にダッシュが好きではありません。変更されたフィールド。

メッセージ13607、レベル16、状態4、ライン18
JSONのパスが正しくフォーマットされていません。予期しない文字 ' - 'が位置6に見つかります。

クエリでダッシュをエスケープする方法はありますか?ダッシュがなければ、すべてうまく動作します。 JSONをサポートするために必要と

、私は、フィールド名の前後に二重引用符を追加する互換性レベル= 130

答えて

3

でのSQL Server 2016を使用してい

SELECT 
    * 
FROM 
    OPENJSON(JSON_QUERY(@jsonData,'$.insertions')) 
WITH 
    (uuid UNIQUEIDENTIFIER '$.id', 
    modified DATETIME '$."last-modified"', 
    Label NVARCHAR(128) '$.label' 
    ) 
を動作するようです
関連する問題