2017-03-27 98 views
1

我有一個表格,其中一個字段是JSON字符串。在SSRS報告中顯示格式化的JSON

「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. 001: 03/08/2017 CX.UW.001.AUDIT:admin'''比「'CX.UW.001」更具可讀性:「03/08/2017」,「CX.UW.001.AUDIT」:「管理員」,'''? – 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 

或者如果你希望字符串換

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

返回

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