Skip to content
Advertisement

Remove String and Symbols

I am trying to create a query to remove some varchar and symbols from a big string, basically a table will have a column with this format(the information comes from an API call):

$.owner = "javier@tl.com" and $.asignee ="joe" and $.Entities.Entity = "12345" And $.CountryService.Country ="1" and $.CountryService.Service="B"

so the requirement is to take the main “column names” from the sample, so at the end the string will be like:

    owner = "javier@tl.com" and asignee ="joe" and Entity = "12345" And Country ="1" and Service="B"

this should be dynamic because we could have more data like $.Entities.Name, $.CountryService.Region, etc

Advertisement

Answer

This is rather simple and can be done leveraging STRING_SPLIT, STRING_AGG, and CHARINDEX.

DECLARE @string VARCHAR(1000) = 
  '$.owner = "javier@tl.com" and $.asignee ="joe" and $.Entities.Entity = "12345" And $.CountryService.Country ="1" and $.CountryService.Service="B"';

SELECT NewString = 
         STRING_AGG(SUBSTRING(split.value,IIF(p.P1>0 AND p.P2>p.P1,p.P1+1,1),8000),'and ')
FROM        STRING_SPLIT(REPLACE(REPLACE(@string,'$.',''),'and ','|'),'|')   AS split
CROSS APPLY (VALUES(CHARINDEX('.',split.value), CHARINDEX('"',split.value))) AS p(P1,P2);

Results:

owner = "javier@tl.com" and asignee ="joe" and Entity = "12345" and Country ="1" and Service="B" 
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement