2017-03-27 12 views
1

1つのフィールドがJSON文字列であるテーブルがあります。フォーマットされたJSONをSSRSレポートに表示

"CX.UW.001": "2017年3月8日"、 "CX.UW.001.AUDIT": "管理者"、私はそれが読めるに表示されてSSRSレポートを作成したい

形式:

CX.UW.001: 03/08/2017 
CX.UW.001.AUDIT: admin 

可能ですか?

+0

がどのように '' 'CX.UW.ある

Select A.ID ,DisplayAs = replace(replace(JSON,',',char(13)),'"','') From @YourTable A 

戻り値をラップします001: 03/08/2017 CX.UW.001.AUDIT: '' 'CX.UW.001": "03/08/2017"、 "CX.UW.001.AUDIT": " admin "、" ''? – Anand

+0

単一の文字列ではなく、複数の行に解析する必要があります。文字列の長さは、レコード/行ごとに可変です。 – user7776056

答えて

0

あなたが探している場合複数のレコードの場合、すべての解析/分割関数が行います。あるいは、単純なCROSS APPLYを少しのXMLと組み合わせて使用​​することができます。

Declare @YourTable table (ID int, JSON varchar(max)) 
Insert Into @YourTable values 
(1,'"CX.UW.001": "03/08/2017", "CX.UW.001.AUDIT": "admin"') 

Select A.ID 
     ,DisplayAs = replace(B.RetVal,'"','') 
From @YourTable A 
Cross Apply (
       Select RetSeq = Row_Number() over (Order By (Select null)) 
         ,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)'))) 
       From (Select x = Cast('<x>' + replace((Select replace(A.JSON,',','§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml).query('.')) as X 
       Cross Apply x.nodes('x') AS B(i) 
      ) B 

戻り

ID DisplayAs 
1 CX.UW.001: 03/08/2017 
1 CX.UW.001.AUDIT: admin 

それともたい場合は、文字列が

1 CX.UW.001: 03/08/2017 
    CX.UW.001.AUDIT: admin 
+0

最初の解決策は魅力的に機能しました。ありがとう!! – user7776056

+0

@ user7776056ハッピーが助けてくれました。 –

0

右、そのフィールドをクリックしexpressionを選択し、Common FunctionsカテゴリからTextを見つけ、Replace機能を使用し、似た構文でなければなりません:

Replace (Fields!Yours.Value.Value,"""","") 

またはTSQLで:

Select Replace(JSON_COLUMN,'"','') 
From table 
関連する問題